ThreadStart и ParameterizedThreadStart - это типы делегатов, определенные следующим образом:
public delegate void ThreadStart()
public delegate void ParameterizedThreadStart(object state)
Они оба используются для указания действия, которое будет выполнять новый поток. Очевидно, что ParamaterizedThreadStart принимает параметр, а ThreadStart - нет :) Раньше это был очень удобный способ дать новому потоку задачу с определенным фрагментом данных - теперь я просто использую анонимные функции, действующие как замыкания.
Класс Thread
представляет сам поток выполнения - вы создаете его (с одним из вышеупомянутых делегатов), запускаете его и затем запускаете.
См. Мою статью о параметризованной многопоточности для получения более подробной информации - хотя здесь, похоже, она сейчас недоступна: (