Squid is a good general-purpose proxy. On Mac, SquidMan is a nice installer and front-end for Squid.
Charles is a proxy largely intended for use by developers to view and manipulate HTTP traffic. It has some handy features like bandwidth and latency throttling, and a breakpoint feature where you can see the request and potentially alter it before a response is sent.
The best HTTP debugging tool for Windows developers is Fiddler, which can also act as a debug proxy for Mac or Linux clients. Fiddler is a very mature tool at this point, and is pretty transparent for WinInet clients.
HTTP::Proxy is a proxy written in Perl, the advantage being full manipulation of the HTTP stream by a developer. It doesn’t work on Windows for some reason.
And of course many web servers have built-in or add-on proxy support.