Resolvers are the clients that access name servers. Programs running on a host that need information from the domain name space use the resolver. The resolver handles:
Querying a name server
Interpreting responses (which may be resource records or an error)
Returning the information to the programs that requested it
In BIND, the resolver is just a set of library routines that is linked into programs such as telnet and ftp. It's not even a separate process. It has the smarts to put together a query, to send it and wait for an answer, and to resend the query if it isn't answered, but that's about all. Most of the burden of finding an answer to the query is placed on the name server. The DNS specs call this kind of resolver a stub resolver.
Other implementations of DNS have had smarter resolvers, which can do more sophisticated things such as build up a cache of information already retrieved from name servers.[7] But these aren't nearly as common as the stub resolver implemented in BIND.
[7] Rob Austein's CHIVES resolver for TOPS-20 could cache, for example.