So, this varies by your intended use.
Every processor has a pipeline they execute the basic instructions on. Think of it sort of like a highway.
You have two rough solutions to maximize the number of cars getting through: you can increase the number of lanes (cores/threads) or you can increase the speed of the cars (clock speed).
An application has to be designed with this in mind though, as it's not automatic. Many newer games are starting to take advantage of multiple threads, but the killer app is typically compilation work (video editing, code, images, etc).
Getting a solid thread/core count is still almost always helpful though. Note, a core is worth a bit more than threads in this situation.
Threads are actually a count of simultaneous execution pipes that can run - you always get 1 per core.
Why you see more threads is a bit of a cheat, hence why pure cores are a bit better: threads in excess of the core count are not actually "real". basically those ones just trick the computer into passing more execution data into the processor, which allows the processor to optimize its execution flow better.
If you fully occupy the core with a task, the logical (fake) threads will not help you, as there's no room to optimize since the core is already chock full.
Tldr: more threads and cores is usually good, but software does have to be coded specifically to take good advantage of this. In a close comparison, take an additional core over more threads. Some threads (in excess of core count) aren't quite as useful as an extra core.
The reason these help you is because if you imagine the instructions your proc has to execute like cars, it's equivalent to adding more lanes to the highway.