As was already said, the main game loop (where all the ticks and blueprint stuff happens) is executed in a single thread. The rendering is done in a separate independent thread.
There are also other thread, e.g. for asset streaming and various job executors.
With C++ you can either tap into the threading framework provided by the Unreal Engine or you can just spin up your own vanilla C++ threads.
Which CPU cores the threads are working on is not decided by the Unreal Engine but rather by the operating system. And it is possible that the OS decides to move a thread from one core to another one, for example to spread the generated heat.