Puta é um termo mais cruel, muito utilizado para xingar uma pessoa ("seu filho da puta", "vai prá puta que o pariu", etc.). Já GP é um termo mais neutro, sem toda essa carga pejorativa.
Acho que isso acaba se refletindo na forma de tratarmos as prostitutas. Se o sujeito é educado, não gosta de falar palavrão e se encantou com uma prostituta (como os BOP's aqui do fórum), provavelmente irá chamá-la de GP, namoradinha, minha princesa, etc.
Agora, se o cara é menos refinado, tem um linguajar menos rebuscado e não gostou da prostituta, provavelmente irá procurar externar o seu sentimento chamando-a de puta, quenga, perva, cadela, etc.
Puta e GP são sinônimos, assim como cu e ânus, buceta e vagina, tetas e seios, bunda e nádegas, caralho e pênis, porra e esperma, etc. A utilização de um ou outro termo depende de quem fala e das circunstâncias.
Em resumo, a diferença entre GP e puta é apenas semântica, e não conceitual. As palavras são diferentes e têm vários outros sinôminos, mas significam a mesma coisa: prostituta, que significa mulher que pratica o ato sexual por dinheiro. Apenas isso, e mais nada!
E tenho dito!