As suggested by Arcath, Squid is the de factor standard these days for open source caching proxies. Various add-on packages allow content filtering and several programs have been make to do fancy reporting against Squid's logs.
A good lightweight caching proxy is Polipo. It's not the fanciest thing in the world, but it's small, fast, and should work well enough for a handful of users.
Concerning your second question, Squid's ACL functions can be used for caching only certain sites. I'm not sure why you'd go through the trouble of setting up a proxy but not want the clients to take full advantage of it, though."
"If you want a proxy for apt updates, look at apt-cacher-ng. I used that on my cluster at work.
The other answers are for general-purpose HTTP proxies that don't specifically know about Packages.gz, Releases, and .deb files. apt-cacher-ng uses that for cache staleness decisions."