Процессы работают на различных ядрах процессора или нет?
да.
с точки зрения программы "железных" процессоров нет.
есть цифра максимального количества одновременно исполняемых потоков.
даже если программа наштампует исполняемых потоков больше максимального числа, то операционная система просто нашинкует ресурсы потоков исполнения между всеми запрашивающими.
т.е. многопотоковая программа будет исполнятся и на однопроцессорном компе.
Многозадачностью занимается операционная система. С точки зрения самой программы, она об этом ничего не знает, и сама программа может пользоваться только средствами языка (создавать треды), но будут эти треды обработаны одним ядром, одним процессором или разными - программа ничего не знает.

ОС рулит тем, какой процесс и какой тред где будет выполняться. Для максимально быстрой работы нужно понимать, что создавать бОльше тредов, чем есть ядер - не будет иметь особого смысла для ускорения расчетов.