La cláusula #define no sabe nada de constantes o variables.
En realidad lo que único que hace es definir reglas de sustitución de porciones de texto.
Lo que hace es intentar hacer las distintas sustituciones, hasta que ha revisado todas las macros declaradas con #define.
Eso es lo que hace el preprocesador.
A continuación, el compilador toma el código resultante que le dejó el preprocesador y se fija si hay constantes, y trata de evaluarlas.
La cuestión es que todos los valores que uno escribe a mano, como 5.14, "piribim", "Hello World", 0.0, etc., son constantes, y el compilador sí que reconoce que son constantes y no variables.
Las variables son identificadores que han de declararse en alguna parte como tales, y el compilador también es capaz de reconocer esto, claro.
Pero más aún, si en una expresión en la que hay operadores de C, los operandos son sólo constantes, el resultado es calculado y evaluado directamente por el compilador, y entonces ese resultado es lo único que realmente queda.
El efecto es que queda un código equivalente a que si nosotros hubiéramos escrito el resultado del cálculo a mano, en nuestro propio programa fuente.
Esto tiene sentido, porque es un valor que no va a cambiar durante la ejecución del programa, y entonces no hay inconveniente en que el compilador se tome el atrevimiento de precalcular todo, antes de realizar la compilación "definitiva" del programa.
____________
Lo que hay que entender es que el proceso de compilación se hace en realidad en varias etapas,
y en cada etapa se hace alguna que otra operación de traducción.
Todas esas traducciones consisten en convertir nuestro código fuente en otros programas equivalentes en C, pero que "no se ven".
Si pudiéramos ver el resultado de estos procesos, veríamos programas en C parecidos a los nuestros, salvo que con algunos cambios debido a que ya se han cumplido algunos preprocesos.
____________
En cuanto a tus cambios de números:
#define Me_Conformo_con_CMD 1
#define Me_Gusta_mas_Windows 0
no tienen importancia.
Justamente el código está pensado para que uno pueda poner ahí los números que se le antojen, y todo funcione al final como se espera que tiene que funcionar.
El único requisito es que ambas constantes tengan un valor numérico y distinto.
Esto no lo hemos verificado, pero puede hacerse, e incluso hacer saltar el compilador informando de un mensaje de error en caso de que no se cumpla...
______-
Otra cosa que veo en tu código son las 3er y 4ta líneas:
#define Creo_que Me_Conformo_con_CMD
#define Creo_que Me_Gusta_mas_Windows
Si realmente tenés esas dos líneas escritas, está mal, porque estarías anulando con la segunda la definición que hiciste con la primera.
Entonces siempre te quedará el efecto de la ventanita en Windows como resultado.
Sólo se puede dejar una sola de esas dos líneas.