What you want in this case is not dependencies (as Nagios calls them), but rather you want parent/child relationships in your hosts. If the parent is down and children can not be reached Nagios considers them "unreachable" instead of "down". You can then configure not to be notified if things are "unreachable". You can read more about this in the Nagios documentation here.
Also, from the same section of the 2.0 documentation it is pointed out that services won't alert if the host is down (saving you those alerts):
Whenever a service check results in a
non-OK status level, Nagios will
attempt to check and see if the host
that the service is running on is
"alive". Typically this is done by
pinging the host and seeing if any
response is received. If the host
check command returns a non-OK state,
Nagios assumes that there is a problem
with the host. In this situation
Nagios will "silence" all potential
alerts for services running on the
host and just notify the appropriate
contacts that the host is down or
unreachable. If the host check command
returns an OK state, Nagios will
recognize that the host is alive and
will send out an alert for the service
that is misbehaving.
Service dependencies by default are not inheritable from a host template, but I believe the parent is. So you can inherit parents from templates (if I am correct in this) and save yourself some typing.
Lastly, I actually like to have unreachable alerts enabled. If the router goes down, I want my phone to go "nuts". :-)