Значение 0x0400 предназначено для _WIN32_WINNT_NT4, который является меньшим подмножеством Windows SDk для Windows 2000. Это означает, что вы исключаете, игнорируете и выбрасываете большой объем кода, который был бы скомпилирован в ваш исполняемый файл. Так что да, он будет выполняться быстрее.
Итак, когда вы определяете 0x0501, вы говорите: да, дайте мне все эти богатые дополнительные преимущества, которые имеют заголовочные файлы для Windows XP. Однако ваше приложение, скорее всего, не будет работать на Windows 2000 из-за неудачного импорта. Поскольку вы вносите всю эту лишнюю упитанность, время компиляции будет меньше, а код будет больше, исполняемый файл будет больше, и, скорее всего, он будет медленнее.
Вы можете найти больше информации здесь по этим темам:
http://blogs.msdn.com/b/oldnewthing/archive/2007/04/11/2079137.aspx
http://msdn.microsoft.com/en-us/library/aa383745.aspx