I recommend doing a thorough browsing of the apache manual. All apache servers by default have it installed in the /manual directory, and it's good, if a bit big. Once you wrap your brain around it it'll start to make sense about the third time you configure a box.
On an apache box, you can read the virtual hosts docs at 127.0.0.1/manual/vhosts/index.html
Herein lies the short version.
First point, is that there are two kinds of virtual hosts, named and IP based.
Named virtual hosts let us put many servers on the same IP. I.e. you can have hundreds of names, but only one IP and get them all on the same address.
IP based virtual hosts are where you put a new virtual host on each IP, and no more than one hostname is allowed per IP.
In order to do name based virtual hosting, you have to use the NameVirtualHost directive (docs at: http://127.0.0.1/manual/mod/core.html#namevirtualhost )
It tells the server serve more than one name from a particular IP. If you use a complex enough configuration, you may wind up serving a bunch of names across multiple load balanced net cards.
First thing to do is crank up your error level to debug. Edit the httpd.conf file and find a line that says something like 'Errorlevel error' and change the error to debug.
Then reset the server and tail -f both access-log and error-log while accessing the server and let us know what else the daemons tell you.