So, how does a lookup happen? A client (your web browser, for example) sends a query to a nameserver (listed in /etc/resolve.conf–probably your ISP's nameserver):
client to ISP: "Tell me the address for clue.denver.co.us."
ISP to a.root-servers.net: "Tell me the address for clue.denver.co.us."
a.root-servers.net to ISP: "Don't know, but a, b, and c.gtld.biz know the us. zone (they are authoritative for us.)."
ISP to a.gtld.biz: "Tell me the address for clue.denver.co.us."
a.gtld.biz to ISP: "Don't know, but ns1.westnet.net and ns.utah.edu know the denver.co.us. zone." (Notice there is no co.us. level in the hierarchy.)
ISP to ns1.westnet.net: "Tell me the address for clue.denver.co.us."
ns1.westnet.net to ISP: "Don't know, but dns0.techangle.com (and others) know the clue.denver.co.us. zone."
ISP to dns0.techangle.com: "Tell me the address for clue.denver.co.us."
dns0.techangle.com to ISP: "clue.denver.co.us has address 199.239.19.17"
ISP to client: "clue.denver.co.us has address 199.239.19.17"