And if you want the real explanation, instead of analogies, here it is in a nutshell.
Your computer has X number of jobs/tasks it is working on at any given time (these jobs/tasks are also commonly referred to as threads). It also has Y physical cores and potentially Z 'software' cores if Hyper Threading is enabled. Z always = 2*Y (two software cores per physical core).
Now, when your operating system sends a request to the CPU to have a task worked on, the next available core is assigned to the task. If the core assigned to is a true physical core, it goes to work right away (meaning job will be done promptly). If the core is a software core, the task goes into a queue - if the physical core associated with that software core isn't already working on something else, it will begin work immediately. If not though, the task will have to wait in line until the core frees up.
Your computer typically has many more tasks running than it has cores available (X bigger than Y or Z). The tasks are prioritized based on your software settings (if you're encoding a movie and have set the program to run at high priority, its requests will be scheduled ahead of other random stuff running in the background) and tasks are assigned to cores as they free up. More physical cores means stuff gets done faster. More software cores means tasks get scheduled more efficiently and the physical cores stay busy a higher percentage of the time. As soon as a core finishes what it's working on there is already another task scheduled on its secondary software core. (Compare that to a non-HT cpu where a core finishes up work and then has to wait for some length of time for a new task to be assigned.)
What all this means is that HT allows your physical cores to operate more efficiently but does not yield the kind of gains seen from additional physical cores. HT typically adds somewhere between 25-40% in efficiency gains per core being used, so a dual core with HT will function like 2.5-3 cores, a quad core like 5-6 cores when under heavy load and running software that takes advantage of that many cores.
And there's the real grind - much of the consumer software out there takes advantage of two cores or maybe even four cores but very little goes above that point. So if your particular software doesn't support as many physical cores than you have, they will not help at all in your work, other than simply to run other tasks in the background.
An example of this is the game Starcraft 2, which only supports two physical cores. There's essentially no difference between 2/4/6 physical cores in this game, the only thing that matters is providing two very, very fast cores. So Intel's Turbo Boost helps here, as it shuts down unused cores and pushes the working cores faster.
Hope this helps.
🙂