Well I will try to seperate your issues out for you.
First, as far as nameservers go, you will need to setup bind/MS DNS, or some kind of DNS Server, these are not done through apache, most people perfer to use a provider for this such as zoneedit.com or some popular DNS Service for reliability. Generally speaking it is recommended that you have 2 different servers for DNS and that they be on different class C's in case there are any routing or power issues.
Your next issue is that the virtual hosting, the top domain will be able to be viewable via ip address, however via the domain name if you are not able to see each domain in their respective site, you will need to make sure that there is a 'NameVirtualHost' directive above the virtual host configuration.
ie.
NameVirtualHost 192.0.0.1
<VirtualHost 192.0.0.1>
Servername blah.com
Serveralias
www.blah.com
......
</VirtualHost>
<VirtualHost 192.0.0.1>
Servername domain.com
Serveralias
www.domain.com
......
</VirtualHost>
Be sure to restart apache after you add in this directive as it requires a restart to recognize the changes.