В моем понимании потоки - это в основном структуры данных ядра. Вы можете создавать и уничтожать потоки через системные API. Если вы просто создаете поток, запускаете его выполнение, и в нем заканчивается код, ядро, вероятно, переведет его в состояние без выполнения. В неуправляемом коде вам все еще нужно освободить этот ресурс.
Тогда есть пул потоков. В этом случае вы ставите в очередь работу, выполняемую пулом потоков, а платформа заботится о выборе потока и выполнении вашей работы. Когда работа завершена, поток возвращается в пул потоков. Платформа заботится о создании и уничтожении потоков, чтобы сбалансировать доступные потоки с рабочей нагрузкой и системными ресурсами.