В чем отличие потока и процесса. У каждого приложения существует один процесс и может быть несколько потоков.
QProcess
Процесс это по сути и есть само приложение. Мы запускаем процесс значит запускаем ещё одно приложение.
Если вы думаете, что ваше приложение также стабильно работает и у других пользователей, то глубоко заблуждаетесь.
Использовать второй процесс удобно когда вы хотите знать как выполняется ваше приложение, когда оно крэшится и т.д. в общем логировать его работу.
Тут вторым (дочерним) процессом как-раз будет ваше приложение а главным основным процессом (родителем) будет оболочка стартер, которая например по каналу cout,cerr будет получать логи и самое главное оно будет знать, когда приложение падает.
Крутящееся колесо
И ещё один очень важный момент. Процесс стартер используют, чтобы на экране сразу появлялось какое-то крутящееся колесо, чтобы после клика по значку программы сразу становилось понятно, что программа начала выполняться. В противном случае получится, что пользователь может увидеть первые проявления жизни программы только спустя несколько секунд (5,10,20 сек) и это время он будет удивляться почему программа не запускается и логично будет щёлкать по значку программы ещё и ещё несколько раз, а оно вам надо?
QThread
У каждого приложения всегда есть основной поток, он реализован в QCoreApplication.
Но можно запустить ещё другой поток например для запроса в сеть интернет, чтобы запрос не мешал работать основному потоку и не блокировал интерактивные действия пользователя и отрисовку окон и т.д.
То есть чтобы создавалось впечатление, что все штатно продолжает работать, хотя на самом деле идёт скрытый длительный процесс.
В Qt процессы и потоки реализуются ну прямо быстро и удобно, см. Процесс и несколько потоков QThread.