I can't answer your specific questions, but...
My inderstanding is that Windows thread scheduling in good for general purposes, but I have come across customing scheduling code for special purposes. But this is something I'd only expect to see on a dedicated server.
As well as adjusting the thread priority, as the article mordoran pointed you at shows, you can control where your threads runs using SetThreadAffinityMask
SetThreadAffinityMask function
http://msdn.microsoft.com/en-us/library/windows/desktop/ms686247%28v=vs.85%29.aspx
BUT this function is seen as rather problematic, even dangerous, when mis-used.
You mention tasks in your final point which, together with you general question, suggests you might be interested in Microsoft PPL (Parallel Patterns Library) or Intel TBB (Threading Building Blocks). I don't know a lot about these yet, but am currently trying to learn more about them.
In the end, I think that trying trying to explicitly allocate threads to the cores would probably be rather tricky. But these new task-based approaches might be able to help.
Andy
Parallel Patterns Library (PPL)
http://msdn.microsoft.com/en-us/library/dd492418.aspx
Threading Building Blocks
http://threadingbuildingblocks.org/