небольшое вступление

В чем отличие потока и процесса. У каждого приложения существует один процесс  и может быть несколько потоков.

QProcess

Процесс это по сути и есть само приложение. Мы запускаем процесс значит запускаем ещё одно приложение.

Если вы думаете, что ваше приложение также стабильно работает и у других пользователей, то глубоко заблуждаетесь.

Использовать второй процесс удобно когда вы хотите знать как выполняется ваше приложение, когда оно крэшится и т.д. в общем логировать его работу.

Тут вторым (дочерним) процессом как-раз будет ваше приложение а главным основным процессом (родителем) будет оболочка стартер, которая например по каналу cout,cerr будет получать логи и самое главное оно будет знать, когда приложение падает.

Крутящееся колесо

И ещё один очень важный момент. Процесс стартер используют, чтобы на экране сразу появлялось какое-то крутящееся колесо, чтобы после клика по значку программы сразу становилось понятно, что программа начала выполняться. В противном случае получится, что пользователь может увидеть первые проявления жизни программы только спустя несколько секунд (5,10,20 сек) и это время он будет удивляться почему программа не запускается и логично будет щёлкать по значку программы ещё и ещё  несколько раз, а оно вам надо?

QThread

У каждого приложения всегда есть основной поток, он реализован в QCoreApplication.

Но можно запустить ещё другой поток например для запроса в сеть интернет, чтобы запрос не мешал работать основному потоку и не блокировал интерактивные действия пользователя и отрисовку окон и т.д.

То есть чтобы создавалось впечатление, что все штатно продолжает работать, хотя на самом деле идёт скрытый длительный процесс.

В Qt процессы и потоки реализуются ну прямо быстро и удобно, см. Процесс и несколько потоков QThread.