On a local network: Caching, and/or serving one or more local DNS zones such as "mydomain.local" which would make it possible to access other local servers/PCs by name rather than by address.
In some cases you can use local DNS server to do split horizon/split-brain DNS in order to work around hairpin NAT issues (you're NATing an internal server behind a public IP on a router, but want to access that same server from the inside, using the same FQDN).
Edit: Also, the root servers don't actually host all the DNS records on the internet. In fact, they serve none of those records; they simply hand out pointers to the DNS servers serving the various TLDs (.com, .net etc), which in turn contain pointers to the DNS servers serving the various domains and so on.
In order to function properly, DNS requires lots of servers all over the Internet.
Last edited by Ser Olmy; 09-15-2012 at 08:55 PM.