A site that I like to point people to is dontfeartheinternet.com. It has great videos to learn the basics.
There are lots of people that blog interesting stuff, but it's kinda hard to name just a few. Sooner or later you'll find them by Googling or on Twitter.
I'm not really into reading books and rather learn by just experimenting. Maybe tools like codepen.io or cssdeck.com let you play around and see the result instantly updated.
There are also some online learning services like codecademy.com or teamtreehouse.com that teaches more in an interactive way.
And last, but not least: Going to an actual school. It's not really a must and you can certainly start by learning on your own, but it gives you some basic knowledge that is a great foundation. Just remember, once you're out of school, it doesn't mean you can stop learning. Actually the opposite.
My recommendations are a few years old but nonetheless:
I think people should read "Web design with web standards" (2nd edition) and then start building their own site. Use HTMLdog.com for online reference.
For CSS read "The Zen of CSS design". You'll have to bear with the slightly outdated info but it should give you a feel of how web design became an actual career path.
For Javascript read "DOM scripting" by Jeremy Keith and follow the examples. Ignore jQuery until you do that, then start with some basics at http://www.learningjquery.com/ .
You will need type knowledge so read a primer like "Stop stealing sheep and find out how type works". If you like the topic and want something deeper read "The Elements of Typographic Style".
Now read Mark Boulton's "Designing for the Web" for a summary and more up to date information.
The A List Apart books are probably good too.