To give an example, run mess with the windows build, then run it with the sdl build, then the windows build again. The sdl build will remove the windows-only options, and then windows will remove the sdl-only options. Thus they are incompatible.
Yes, and that's a good thing for usability. Otherwise you'd get inexplicable weird behavior and/or a bunch of error messages if you switched back and forth.
By the way, you made a bunch of drivers render about 8 times slower recently. for loops cause CPU pipeline stalls and repeated *pixel++ = foo; lines do not.