Apache configuration is exhaustively covered in the Apache documentation (though, if you're using Debian or Ubuntu, there are some additional considerations) and the best way to familiarize with Apache will be to study each portion of the documentation as you encounter a need to use a particular module or set of directives.
To address your specific questions:
What information needs to be where?
The file system you described would suggest that your configuration is intended for name-based virtual hosts (the default Ubuntu 10.04 Apache configuration) so any directives which apply to your Apache configuration for all virtual hosts (i.e. domains, subdomains) should be added to httpd.conf
and any directives specific to a given virtual host (including its declaration) should be added to the /sites-available/domain.com.conf
(or similar) file.
What is the priority of processing for these?
Toward the end of a typical apache2.conf
file, the following directive appears:
Include /etc/apache2/sites-enabled
This directive instructs Apache to include all configuration files in the sites-enabled
directory. (see Include documentation)
Files are included in numeric then alphabetical order from 0-9 then A-z.
Will repeated information cause a problem?
Duplicate virtual host definitions will be ignored when Apache is started, however, you will receive a warning when this happens - ideally, you should run apache2ctl configtest
(documentation) before attempting to restart Apache so you have the opportunity to correct duplicates or errors which would prevent Apache from starting.
Note that the config syntax checker will not warn you if there are file permission problems or other issues which would prevent Apache from starting.