A proxy server is a server program which allows clients to contact it and make indirect network connections to network services such as web-servers.
In bullet summary
A typical proxy is used like this:
- Your web browser connects to a proxy,
- the proxy hands the request to a server,
- the proxy feeds the information acquired from the server back to the web browser.
This can be good because:
- The server thinks it's the proxy who's making the original request (unless the proxy forwards information which reveals who is making the request)
- Caching Proxy servers store requested web-pages, images, and so on for later use, which saves bandwidth. Web-browsers also do caching, but are limited to one browser. Caching proxies are very useful in environments where 20-30 share a proxy. Small and fast caching proxies like Polipo can be very useful for personal use if you normally use 2-3 different web-browsers (or just different profiles in the same web-browser).
Filtering proxies alter the client's request or the server's response.
Privoxy also changes the web-browsers requests to protect your privacy. It can, for example, change the browsers User-Agent string to whatever you like.
Polipo  is the best light-weight proxy available today. It's small and cute and uses little or no resources (apart from storage-space). This is a proxy every GNU/Linux user should consider.
Squid is the most commonly used proxy today and it is excellent for huge corporations who are willing to dedicate a computer just for doing proxy-services. Polipo is designed to be small and cute, Squid is designed to run on a dedicated box.
Types of Proxies
Open proxies are proxies who allow anyone to connect to them. Most proxies are private and are protected by a firewall or require a user-name and password. Open Proxies, on the other hand, can be used by everyone and anyone. This is extremely good for everyone.
Many open proxies are actually not meant to be open, they are just mis configurated or "fixed" by clever hackers.