What do I need to do in order to set up something like OpenDNS, which other people can access? What software needs to run on this machine? Where do I populate my DNS entries from?
I'm just curious - no intention of running a competitor to their fine service.
Reading material.
Read through the above about 10 times until you have committed it to memory, then go back and ask yourself if you still want to develop, support, debug, secure, and maintain an open, public DNS service.
There's much more to doing this than meets the eye.
A caching/recursive DNS resolver isn't particularly challenging to implement in and of itself. Windows Server, BSD, and Linux all have it available as a component that comes with it or can be added without charge. On Windows Server 2008+, add it as a role. On *nix, check out the man pages for bind.
"Populating the entries" is what the caching does, I suppose. You may want to read here for info on the basics of how DNS works: Domain Name System
The hard part is security and uptime. That, however, is way outside the scope of this question.