|There's more than one way to do things|
# How do you compensate for templates...
Put them in a version control system.
# template plugins ...
Use a version control system in binary mode
# application modules
Put those in a version control system too
Do you mean configuration files that are different on different servers? Put those in a version control system.
#and non-application modules being inter-dependant?
What are non-application modules?
# How do you write tests that depend on your webserver config (and its environment) and package them with your module?
You sure you want to do that? Why not separate the configuration stuff that is server/environment specific? My guess is that a module should be configurable regardless of environment (if possible).
# How to you get your personal machine to emulate the environment of multiple machines?
There are virtual machines that can do that (Google: vmware)
# How do you move material to your test server..
#... and from there to production server?
# How do you do some of these things in a multi-user environment?
Describe a non-multi-user-environment.
#...(Is the test server a "check out"? Who checks it out?)
Depending on your version control system you typically tag all of the files you want for a release and then checkout everything with that tag. It would be a good idea to put it on a test server at that point. A good person to do this would be a project manager or someone equivalent.
Celebrate Intellectual Diversity