Chacun de ces deux mots peut être utilisé indifféremment, soit à titre de juron (et dans cas davantage dans certaines régions de France que dans d’autres), soit pour désigner une prostituée. Mais quoi qu’il en soit, la forme courte passe pour être le diminutif de l’autre, ce qu’elle a bien l’air d’être, en effet. L’histoire est bien différente et très intéressante...
Il faut savoir que jusqu’au Moyen Âge, on utilisait pour chaque substantif deux formes, qui étaient les vestiges des anciennes déclinaisons latines. Ces dernières avaient six "cas", ou formes différentes pour un même mot, et étaient utilisées selon sa fonction : une forme pour le sujet, une pour le complément d’objet etc. Six formes pour le singulier et six autres pour le pluriel. C’est le fameux "rosa, rosa, rosam" immortalisé par Jacques Brel.
Les déclinaisons existent toujours en allemand et dans les langues slaves, mais elles sont tombées en désuétude en français. La langue médiévale a cependant gardé pour chaque mot les deux formes dont nous parlions plus haut : le cas sujet (naturellement à utiliser uniquement quand le nom est sujet dans la phrase) et le cas "régime", à utiliser pour toutes les autres fonctions. Ainsi, disait-on "li murs" pour dire que le mur était blanc, et "le mur" pour dire qu’on avait peint ce dernier (COD) ou qu’on avait uriné contre (complément circonstanciel de lieu) pour ne citer que deux exemples.
On désignait une prostituée par le mot "pute" à chaque fois que le mot était sujet. Par contre, quand il ne l’était pas, c’est la forme "putain" (cas régime) qui devait être employé. Exemple : "une pute m’a abordé dans la rue", mais "j’ai couché avec une putain" ou "cette robe est celle d’une putain".
Le français moderne a oublié ce vestige de déclinaison, et il n’est pas fautif d’employer l’un pour l’autre, mais le faire quand on le sait est assez plaisant, d’autant plus que "pute" et "putain" représentent un des derniers restes des déclinaisons latines en français.