I see no reason you need to get into uncountable sets if you just want to play around with weird things that can happen with infinite sets.
As for your second question, I remember seeing the argument for uncountability of $\mathbb R$ in elementary school and it stuck pretty well then, and I don't consider myself to have been especially precocious, so I see no reason why we can't get middle school students to understand it as well. (We glossed over some nuances about repeating $0$'s vs. repeating $9$'s in the decimal expansion, but of course a clever choice of renumbering obviates this issue.)
I disagree with Ittay and Asaf. Sure, the definition that most students have of $\mathbb R$ (usually something inane like all the rationals plus all the irrationals) makes for poor mathematics, but they work with real numbers anyhow and decimal expansions are all you need. And the uncountability of $\mathbb R$ is a more compelling topic than the uncountability of the set of infinite binary sequences, which students never work with.
Let me just say if you're going to get into the uncountability of $\mathbb R$, you probably want to illustrate that $\mathbb Q$ is countable (or at least the positive rationals), since 1) this isn't at all obvious at first exposure and 2) it makes the fact that $\mathbb R$ is uncountable more interesting.
While my own experience tells me that you absolutely can teach Cantor's diagonal argument to pre-university students, I have also seen some university students fail to grok Cantor's diagonal argument, so here's two things that make it more digestible:
I've seen people use the following game as a warm-up to Cantor's diagonal argument. Player 1 starts by writing down a sequence of $X$'s and $O$'s of length $n$. ($n=5$ seems to be about right for communicating the idea.) Then Player 2 writes down a single $X$ or $O$. After $n$ turns of this, Player 2 has a sequence of length $n$, and he wins if it is different from any of the sequences Player 1 has written down, and Player 1 wins otherwise. Player 2's winning strategy is of course Cantor's diagonal argument.
I also like to introduce Euclid's proof that there are infinitely many primes as a prelude to showing $\mathbb R$ is uncountable. The basic logical outline is the same: every finite list omits a prime, and every countably infinite list omits a real number. I think doing Euclid first is a nice way of modelling the basic architecture of the proof so that the logical structure is a bit easier to follow. Plus, Euclid's proof is beautiful and interesting in its own right.