A knowledge of html and css is essential if you want to work in a web environment, but you'll really need to focus on one area, there are no good developers who do everything. If you're more artistic you can stay with the "front end", and focus on design skills, crafting html and css, possibly also some javascript coding. Then there is the "back end" jobs which involve interacting with databases and other services, code running on a web server that does the actual work (eg you hit "post" on a forum...code has to take the data on the page, store it in a database, then show you a page with the updated thread data on it).
If you want to do front-end work then html\css\javascript is all you need. If you want to do back-end work then there are more decisions to be made, namely which technology to you focus on as again there are no good developers that do everything. One of the two major schools is "LAMP" which is Linux, Apache, MySQL and PHP; these are all old technologies that have far been surpassed by much better things but people still use them because they are free. The other major school is .net which is the Microsoft stack of Windows, IIS, SQL Server and asp.net.
Most people's route to becoming a developer is a university degree. If this option isn't open to you then you can still make it self-taught, but I think the front-end side of things is more open to the self-taught root as people just want to see something that looks pretty and works. With back-end work there are a lot of concepts to grasp that are hard to get from programming books which is why people often seek people with either a degree or a lot of previous experience (which you'll struggle to get without a degree).