I think the best option is a hybrid. Use windows, but use vagrant when you code.
Creating a custom vagrant box is key since you get to put whatever you want on it and not have to rely on someone else's Vagrant base box. Then you can create VM's for different purposes like trying out a new framework or language or upgrades. You also can match it exactly to whatever VPS image you would use for production.