The proof is outlined in Wikipedia, Stone-Weierstraß-Theorem for the
$C([a,b],\mathbb{R})$ case. As every $C^\infty $ function is continuous this is a subspace, and as the polynomial with rational coefficients are $C^\infty$ you still can take the same countable set which is dense.
Given any closed interval of irrational numbers of cardinality $X$, $A$, shouldn't be the case that we would have corresponding set of $X-1$ rational numbers, $B$, where each rational in $B$ falls "between" two other irrationals in $A$?
That will certainly be true if you change the word "interval" to "set"
and stipulate that $X$ is a finite integer.
Consider a finite set $A$ containing $X$ distinct irrational numbers and nothing else, where $X \in \mathbb Z$.
Then you can arrange the members of $A$ in increasing sequence, that is,
write $A = {a_i}, 1 \leq i \leq X$ such that $a_i > a_{i-1}$ when $i > 1$.
And then you can insert $X - 1$ rational numbers in the "gaps" between
the consecutive members of ${a_i}$.
The problem with this in the more general case is that there are more than a finite number of irrational numbers in any closed interval in $\mathbb R$.
In fact, there are more than a countable number of them.
You can't just go and insert a rational number between each consecutive pair
of irrational numbers, because there is no such thing as a consecutive pair of irrational numbers in an interval. In fact, take any two irrational numbers $r, s$ in the interval; there will be an uncountably infinite number of irrational numbers between $r$ and $s$.
We do indeed have a rational number $q$ that falls between $r$ and $s$,
in fact a countably infinite set of such numbers; but we also have an uncountably infinite set of irrational numbers that fall between $r$ and $s$. There is no way to organize these numbers into an increasing sequence of alternating irrational and rational numbers, like this:
$$ r_1 < q_1 < r_2 < q_2 < r_3 < \cdots < r_{X-1} < q_{X-1} < r_X, $$
so any counting argument based on imagining such a sequence is incorrect.
Best Answer
This follows from the density of $\mathbb{Q}$ in $\mathbb{R}$. Let $p(x) = \sum_{k=0}^n a_k x^k$ be any polynomial with real coefficients and fix an $\epsilon > 0$. Note that for any $q(x) = \sum_{k=0}^n q_k x^k$ and any $x \in [a,b]$ $$ |p(x) - q(x)| \leq \sum_{k=0}^n |a_k - q_k| |x|^k \leq \sum_{k=0}^n |a_k - q_k| M^k $$ where $M = \max(|a|,|b|)$. So you can show that $\|p-q\|_\infty < \epsilon$ by, for each $k \in\{0,\ldots,n\}$, choosing a $q_k \in \mathbb{Q}$ such that $$ |a_k - q_k| < \frac{\epsilon}{(n+1)M^k}. $$
The way it's stated in the passage you've selected, no: the Weierstrass Approximation Theorem doesn't say anything about the coefficients of the approximating polynomials. However, we've just said quite a bit! In fact, it's not difficult to combine Weierstrass's theorem with 1. to conclude that $\mathbb{Q}[x]$ -- the set of polynomials with rational coefficients -- is dense in $C[a,b]$. Do you see how?
In fact, this is exactly what the author is saying when he points out that $C[a,b]$ is separable! I'm not sure how generally separability is defined in Carother, but a metric space $M$ is separable if it contains a subset $S$ such that
(Typically such a subset $S$ is called a countably dense subspace of $M$, naturally!) Here $M = C[a,b]$ with norm $\|\cdot\|_\infty$ (or metric $d(f_1,f_2) = \|f_1-f_2\|_\infty$), and $S = \mathbb{Q}[x]$. If you can show that $\mathbb{Q}[x]$ is uniformly dense in $C[a,b]$ as I recommended above, then you've also shown that $C[a,b]$ is separable. (Side note: How do you know that $\mathbb{Q}[x]$ is countable? If you don't immediately see an argument, now would be a good time to prove that this is true.)
Edit: Here's how to conclude explicitly that $\mathbb{Q}[x]$ is dense in $C[a,b]$ given what we now know.
Let $f \in C[a,b]$. Assume $\{p_k\}$ is a sequence of polynomials converging uniformly to $f$ on the interval $[a,b]$. Accordingly, if we fix an $\epsilon > 0$, we know that there exists $K_\epsilon \in \mathbb{N}$ such that for all $k \geq K_\epsilon$ $$ \|f - p_k\|_\infty < \epsilon/2. $$ At the same time, by 1. we know that for each $k$ there exists a sequence $\{q_{k,i}\}$ of polynomials with coefficients in $\mathbb{Q}$ such that $q_{k,i} \to p_k$ uniformly on $[a,b]$ as $i \to \infty$. Hence for each $k$, there exists $I_{k,\epsilon} \in \mathbb{N}$ such that and for all $i \geq I_{k,\epsilon}$ $$ \|p_k - q_{k,i}\|_\infty < \epsilon/2. $$ Set $k = K_{\epsilon}$, set $i = I_{k,\epsilon}$, and then conclude that there exists a polynomial $q := q_{k,i}$ with rational coefficients such that $$ \|f - q\|_\infty = \|(f-p_k)+(p_k-q)\|_\infty \leq \|f-p_k\|_\infty + \|p_k - q\|_\infty < \epsilon/2 + \epsilon/2 = \epsilon. $$