Yes you have a lot of options. If you need to debug both projects at the same time then you will end up with two solutions but can still share code.
1)
When working with two or more projects in a solution the "Startup Project" becomes quite important. Visual Studio uses the Startup Project to make F5/Debug/Start work.
note: If the Win32 project is the Sartup Project then when editing Arduino code the Visual Micro buttons and menu items will provide compile>upload for Arduino. If the arduino project is the Startup Project then the standard Visual Studio F5/Debug/Start will build and upload the Arduino project.
The Startup Project is shown with a bold name in the solution explorer. Right click to set a project as the Startup Project.
2)
Probably the best way to share code is to use
Visual Studio C++ Shared Projects". Visual Studio will apply intellisense for the Startup Project when editing code in a Shared C++ Project. You will see that a shared c++ project is simply a .vcxitems project file instead of the usual .vcxproj project file. During a build, visual micro will copy shared project code files into a temp folder along with the project code files. The sub folder structure of a shared project will be reflected during copy. Therefore a shared project source in "proj\src\test" would be #included as "src\test" in the main project code.
Another way to share code is to click a project and select "Add existing item", then navigate to a folder with some cpp/h/c code and Visual Studio will add it to the project as a "Short cut/link". In this case, during a build, visual micro will build as if the linked code resides in the same folder as the arduino project code. Arduino builds happen in a temp folder, so linked sources are copied to the temp folder along with the project code prior to compile.
3)
If you switch on vmicro>compiler>verbose you will see the standard -D defines available to an arduino build. for example -dARDUINO= shows a define is available called ARDUINO. The micro controller family and type are also usually available as #defines. The #defines are specified in the build definition of whatever hardware you have installed so can change depending on hardware.
You can also add additional defines in the visual micro project properties
http://www.visualmicro.com/page/User-Guide.aspx?doc=Project-Properties-Reference... Visual Studio has it''s own defines which you will find for win32 apps. They will be different to arduino because it's using gcc (you prob know that)
this is a library shared project type because it has a library.properties. normal shared projects do not have a library.properties file and are compiled alongside the project code. library projects are compiled like arduino libraries.