Une valeur de 0x0400 cible _WIN32_WINNT_NT4, qui est un sous-ensemble plus petit du SDk de Windows qui cible Windows 2000. Cela signifie que vous excluez, ignorez et jetez une grande partie du code qui aurait été compilé dans votre exécutable. Donc oui, il s'exécutera plus rapidement.
Ainsi, lorsque vous définissez 0x0501, vous dites : " Oui, donnez-moi tout ce que les fichiers d'en-tête de Windows XP ont à offrir ". Cependant, votre application ne fonctionnera probablement pas sous Windows 2000 en raison de l'échec des importations. Puisque vous apportez toute cette richesse supplémentaire, vos temps de compilation seront plus lents, et votre code sera plus gros, votre exécutable sera plus gros, et très probablement il sera plus lent.
Vous trouverez ici de plus amples informations sur ces sujets :
http://blogs.msdn.com/b/oldnewthing/archive/2007/04/11/2079137.aspx
http://msdn.microsoft.com/en-us/library/aa383745.aspx