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
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.
Parallel Patterns Library (PPL)
Threading Building Blocks