I feel your pain!

I ran Apache on a home server connected to a single IP DSL for several years, using named virtual hosting for a half dozen domains. It is far from intuitive! It was not Apache2, so there may be some differences. If it will help, here are some observations:
The reason Apache needs a fully qualified domain name is that it has to know what requests to respond to.
Running it as localhost (127.0.0.1) is different than running it as an external Internet server.
There are several files that are involved in named virtual hosting. The local etc/hosts file only has to do with resolving domain names that are generated from the local computer (to shortcut going out to DNS), not incoming requests from the Internet.
http://www.faqs.org/docs/securing/chap9sec95.html. The virtual host name detection relies on the other files, like sites-enabled/sites-available, and (I think) http.conf.
It has been a year or so since I migrated to a hosting service, so my memory of the detailed techniques has faded somewhat. I do remember that I learned a whole new vocabulary of 4-letter words while I was getting it all to work. My best suggestion is to scour the net for explanations of how named virtual hosting really works, not just little examples. That way lies madness. Once you actually understand how it works, it will be simple. Trust me!