DHCP (Dynamic Host Configuration Protocol) is a method of automatically handing out, and recovering unused, IP addresses (and other settings as techie007 said) rather than having to set them statically. Setting them statically becomes a nightmare to keep track of them on a large network, so this was developed to ease that management burden.
DHCP gets you an IP address (subnet mask, and default gateway at least), which is VERY specific to your local network, and therefore has to be exactly correct, and UNIQUE to your network. This IP address allows you to connect to other systems, both locally, and to the Internet.
DNS is for name resolution, meaning, the conversion of www.microsoft.com (for example) into an IP address that your system can connect to. There are hundreds of thousands, maybe millions, of DNS servers out there that can give you that information.
Most people use the one their ISP's have given them, but you could technically get converted IP address information from just about ANY DNS server out there, so you can pick it at will, unlike the very specific IP address given to you by DHCP. In fact, many people use Google's public DNS servers: 8.8.8.8 and 8.8.4.4 since they are very robust.
Unlike your IP address, which is only for your ONE computer, any number of people can access the same DNS server.
One last caveat: For anyone reading this, if you are on a Microsoft domain, or other corporate environment, you do not want to override these settings. Your computer needs the internal DNS server to resolve hosts on your internal network.