Форкинг создает копию текущего процесса, в то время как потоки выполняются в одном и том же процессе и обычно используются для вычисления чего-либо в фоновом режиме, поэтому приложение не кажется замороженным.
Что касается полезности потоков и разветвления, я бы пошел с потоками, если у вас нет особой необходимости во втором процессе.
Что касается создания потока, я бы рекомендовал использовать библиотеку pthreads. Он будет работать в любой операционной системе UNIX (Linux, BSD, Mac OS X), но находится на относительно низком уровне. Если вы хотите что-то более высокого уровня, посмотрите QThread из QT.