What you need to learn all depends on what you want to be able to do.
For web design all you need to learn is HTML and CSS (good graphics skills also help - like Photoshop, etc). These are only markup and layout languages so in order to do anything other than static pages that are always the same you will need to learn some other languages. In any case HTML and CSS are a MUST and you should learn them very well. Also try to link your css styles to an external style sheet, not add them inline.

You say you can set up an Apache server so I would definately recommend learning PHP. Along with this I would suggest learning about MySQL databases and how to set/retrieve data to/from them using PHP.
Using a mixture of HTML, CSS, PHP and MySQL you can create almost anything from simple sites to full blown complex web applications.

One of the first things I would recommend learning in PHP is how to include pages. This will enable you to, for example, have one file for your main menu and include it on any page with just line line of code. Then if you need to change your main menu you only need to change it in one place instead of changing every page.

The rest of PHP is like many other languages so if you have ever programmed in anything else learning it should be easy. You will find all the standard code structures there (if/then/else, loops, procedures, etc, etc).

There are lots of tutorials and LOTS of reference on the net. Start simple and learn what you learn WELL. There are so many examples of badly designed or badly written websites out there it would be a shame to add to these.

There are many more skills involved in producing a good site than just programming. Graphic design, user interface design, knowing how to keep your pages accessible to as many people as possible, database design, knowing which languages and technologies to use in which cases and, most importantly, being able to implement all these skills together will enable you to make good, useful websites.
Good luck.