1-4 are all related. You can learn them all by building something (as someone has mentioned). The problem with saying "learn by building" is how? Nobody ever explains how.
This is how: Learn from whatever resource you learn best (like a cookbook-style tutorial, or a textbook or a video) and then take that knowledge and apply it to the bigger project. If you have your own "how", then go with that.
As for 5, avoid the JS-frameworks for now. Dabble with them, but be flexible enough to try more than 1 out. They're all pretty much in their "hipster" lifespan, so wait until the hipsters move on and then consider picking up one of those frameworks (unless you are a hipster yourself).