1) O Squid é um proxy especial para o tráfego http e https. Como ele conhece este protocolo, ele pode oferecer alguns recursos avançados como cache, filtragem, regras de reescrita, resolução de dns. Todos os navegadores da web sabem como lidar com proxies http, pois fazem parte dessa especificação de protocolo.
Além disso, o Squid pode atuar como um proxy transparente , no qual você não configura seu navegador para usá-lo, mas um firewall redireciona o tráfego para o proxy. O navegador não sabe que está usando um proxy, que é o significado de transparente nesse cenário. Sua configuração antiga não era transparente nesse sentido.
2) ssh -D atua como um proxy SOCKS que é independente de protocolo. Leva apenas todo o tráfego chegando na porta de meias no lado local do túnel, extrai a carga e envia para o lado remoto não modificado e desmarcado e lá envia para o destino real. Para que um proxy SOCKS funcione, o programa cliente deve suportá-lo especialmente à medida que cada pacote enviado do cliente para o proxy de socks precisar ser alterado (encapsulado) para que o proxy de socks saiba para onde enviá-lo. Não sei se todos os navegadores da Web o suportam, mas, em princípio, ele funciona com muitos protocolos, não apenas com http.
3) Sua linha de comando antiga ssh -T -N -x -C -L3128:127.0.0.1:3128 ...
apenas abriu um túnel simples, onde todo o tráfego que entrava na porta local 3128 era enviado para o destino predefinido 127.0.0.1:3128 não modificado. Isso você pode usar para qualquer cliente, já que nenhuma modificação dos pacotes enviados é necessária, mas você tem apenas um destino fixo.
Além do proxy, o ssh sempre usa um túnel criptografado, para que seus dados não possam ser rastreados durante a viagem pelo túnel.
Sua configuração antiga combinava o método 1 e 3, mas, em princípio, eles podiam trabalhar sozinhos, dependendo das circunstâncias.
4) Com a VPN, você também cria um túnel criptografado do seu host local para o seu servidor "proxy". Neste caso, não se limita a um programa cliente, mas o seu sistema operacional envia todo o tráfego de rede não local para o seu proxy, que então o encaminha para o destino. Para gerenciar isso, você precisa da permissão root / administrator, por isso pode não ser tão fácil de configurar.
Em todos os quatro casos, os dados são primeiro enviados para um host remoto, que cria a conexão real com o servidor da Web de destino e envia sua solicitação. A resposta primeiro retorna ao host remoto que procura o destino real em alguns dados internos e o envia de volta ao cliente original. Sites que mostram o seu IP só vêem o host remoto e não sabem sobre o seu túnel / proxy.
Editar:
Se um site realmente quer saber o seu IP, pode haver algumas possibilidades através de javascript ou plugins dentro de uma página web, que executam o código dentro do seu navegador, talvez usando alguns bugs. Se você realmente precisa esconder o seu endereço IP real, você tem que desativar o javascript e plugins.
Edit2:
Adicionado VPN