В общем случае логика такая:
1. Отформатировать диск.
2. Поставить на весь диск первую винду (если семерка и выше - это для того, чтобы установщик винды поставил первым резделом загрузочный радел для загрузчика).
3. После установки от основного раздела откусывается еще один кусок под вторую ОС.
4. Раздел с установленной виндой скрывается любым нормальным менеджером разделов (ну, можно его просто забэкапить и удалить).
5. Ставится вторая винда во второй раздел.
6. Перезагружаемся в лайв систему и отуда открываем/восстанавливаем из бэкапа раздел с первой виндой.
7. Загружаемся во вторую винду и видим, что второй раздел по прежнему имеет название как диск С, а первый - D. Для этого необходимо скрыть первый раздел, чтобы вторая винда определила после загрузки его вторым диском.
8. Далее просто скрываем любым твикером или руками через реестр в проводнике во второй винде первый раздел, а в первой - второй раздел. В проводнике не будут видны дополнительные диски, но доступ туда будет все равно.
Это все - общий случай, плюс возможны варианты - т.к. разные версии винды могут повести себя по разному. Если же надо что-то более серьезное, то тут уже ставим специальный менеджер ОС, который позволяет скрывать разделы перед запуском ОС: например Acronis OS Selector.