Despite many people not liking his book for beginners, I remember Rudin's proof in Principles of Mathematical Analysis to be much easier to understand than his proof of the Weierstrass Theorem (admittedly, not saying much).
The proof is simple in it's general approach, but the devil is in the detail. I can flesh out the intuition, but you'll need to work through the details yourself.
When you want to prove that an algebra of some functions contains a nice set X of functions or is dense, you'll generally approach it this way:
use really basic functions you've either assumed already exist in your algebra, or can easily build, and combine them into more complicated functions. For example, the Stone-Weierstrass Theorem assumes that we have a non-zero constant function, and that our algebra separates points. Okay, if we only had the constant function, we would just have the set of all functions which can be built from that alone-namely multiples of that constant. This isn't a huge class of functions, and so we need more. How are we going to get non-linearity? If all out functions were constant, then adding and multiplying would still give us constants.
Thus, we need to assume a priori that there is some non-linear function in our algebra for us to eventually be dense in the set of continuous functions. This is why the separating points assumption is needed.