- Is there a good estimate of how much training it may take before you make money doing this?
I think (and in my experience) you can start making money as soon as you can do useful work. That doesn't necessarily need to be complicated or broad in scope, just find the right client who needs a tweak or some minor bugfix/feature. Finding the right client is the bigger challenge than learning enough to make money IMO. That skill will stay with you as well - your technical skills will grow and evolve but you'll always be looking for the right client(s) to fit your skillset and maximize your potential.
- Is Codecademy the best place to learn?
From what I hear second-hand, it's pretty good. Bootcamps are great if there are any in your area. Also finding someone to learn from who is already doing the kind of work you want to do is invaluable. I learned mainly from books and online tutorials and building/breaking sites on my own, supplemented by some very generic classes in college (not specifically web dev, but general programming & linux stuff) but that was before codecademy existed.
- Would you recommend a laptop or desktop for a workspace?
Laptops come in handy if you need to meet with clients in person. Otherwise whatever works.
- Is it beneficial to make generic sites as a beginner to build a portfolio?
Yes, absolutely! Build whatever you're capable of as soon as possible. Then experiment with, break, rebuild, and iterate on it.
I was basically self-taught over the course of several years, building some independent projects as well as some student organization and family stuff - all for free - and that portfolio helped me land my first job as a real web dev at a digital agency during my last semester of college. I have also ended up doing plenty of linux sysadmin and AWS work since that's what turned out to be required where I was working as a dev.
You will also find that learning to be a web dev is an ongoing process. You should focus on being able to teach yourself how to build something useful relatively quickly rather than "completely" learning any particular skill or language, since the ability to learn, adapt, and produce working code is the primary skill you will be able to sell.