Windows moves the threads between the cores hundreds of times per second actually. One core can do one thing at a time but you have a lot of programs running at the same time (Windows and everything that's part of it for example) which is why this happens. The graphs show some kind of average of one second or so.
So as an example: You have one CPU core and are running exactly two programs "at the same time". But what is actually happening is that the first program runs for 1 ms, then the second program runs for 1 ms while the first one is not being processed by the CPU, and they continue to alternate like this. Now with a lot of programs and a lot of cores they just move around a lot and the graphs show the average load of each core for one second.
So as an example: You have one CPU core and are running exactly two programs "at the same time". But what is actually happening is that the first program runs for 1 ms, then the second program runs for 1 ms while the first one is not being processed by the CPU, and they continue to alternate like this. Now with a lot of programs and a lot of cores they just move around a lot and the graphs show the average load of each core for one second.
Asus N55SF, i7-2670QM (~2,8 ghz under typical load), GeForce GT 555M (only OpenGL)