As diferenças são bem simples. Vou pegar o HTTP como exemplo.
Sempre que você abre um site, seu navegador envia uma solicitação ao servidor correspondente, digamos example.com e "solicita" o site que você deseja visualizar, solicita uma imagem ou qualquer outro recurso.
Ao usar um servidor proxy, seu navegador envia essa solicitação para esse servidor proxy que, por sua vez, encaminha essa solicitação para "example.com", recupera o recurso e entrega os dados de volta para você.
Por isso, "example.com" só fala com o servidor proxy, não com o seu computador.
Uma VPN é diferente. É uma "Rede Privada Virtual". Observe o termo "rede".
Por exemplo, a maioria das universidades, empresas, ... oferece uma VPN desse tipo, permitindo que seus funcionários / alunos / ... se conectem à rede interna de qualquer lugar do mundo.
Você poderia, por exemplo, usar a intranet quando conectado à VPN, mesmo que ela seja protegida por firewall para computadores que se conectam de fora.
Em instituições de pesquisa, é muito comum oferecer acesso a catálogos / recursos restritos, como documentos de pesquisa, apenas de dentro dessa instituição. Tecnicamente, você está se conectando de fora ao servidor "dentro" da instituição, que então solicita os recursos para você. Observe que este não é um servidor proxy, já que você está realmente conectado a essa rede e seu cliente ainda se conecta a example.com
É, a propósito, também possível encapsular apenas alguns serviços via VPN, mas um túnel completo é bastante comum.