Из описания MSDN функции API Windows CreateThread ():
"Объект потока остается в системе до тех пор, пока поток не завершится и все его дескрипторы не будут закрыты посредством вызова CloseHandle."
Мое понимание того, как работает CreateThread, заключается в том, что вы в основном запрашиваете Windows порождать поток и назначать указатель на функцию, которую вы хотите, чтобы поток вызывал. Когда процесс завершен, вы «вежливо» сообщаете Windows, что вам больше не нужен поток.
Итак, я думаю, все сводится к тому, как именно было написано приложение. Использование полезного языка разработки, который предоставляет обертки для потоков, устранит здесь большую неопределенность, особенно если потоки выполняются через объекты и соответствующим образом отбирается мусор при завершении работы приложения.
Что касается операционной системы, я согласен с "wj32", что на самом деле нет основного потока как такового, но я думаю, что сам поток приложений можно было бы концептуально рассматривать как "основной поток", при условии, что приложение соответствующим образом управляет распределением ресурсов потока.