No Windows, um soquete é um link entre um ponto de extremidade de comunicação e um processo. É por isso que, quando você duplica um soquete, acaba com dois soquetes, mas apenas um ponto final. É por isso que você não pode passar um soquete de um processo para outro sem criar um novo soquete no outro processo.
Se o processo deixa de existir, seus soquetes necessariamente deixam de existir. Não existe um conceito de soquete sem um processo para mantê-lo. É por isso que mesmo os drivers do kernel do Windows que desejam criar soquetes no nível do kernel devem especificar um processo para possuir o soquete ou chamar a função a partir de um contexto de processo que possa possuir o soquete. (Ou eles podem manipular os terminais diretamente sem usar soquetes.)
Sua pergunta parece realmente não ser sobre soquetes, mas sobre os pontos finais de comunicação. Um soquete tem uma referência ao seu terminal de comunicação. Quando o soquete desaparece, a contagem de referência cai. Se atingir zero, será removido assim que for permitido, considerando os requisitos do protocolo de comunicação ao qual o terminal está associado. O TCP possui um estado TIME_WAIT durante o qual o ponto de extremidade deve ser mantido para manipular quaisquer pacotes "restantes".