В чем между ними разница и где какой предпочтительно использовать
std::for_each
-- это алгоритм из стандартной библиотеки C++, а tbb::parallel_for
-- это часть intel Threading Building Blocks. Если проект не использует TBB, то выбор очевиден. Если использует, то у tbb::parallel_for
несколько больше возможностей по управлению разбиением интервала на части и выполнением рабочих потоков.