1.- Eso se debe al optimizador de código de Visual C++: no debes preocuparte, el código se está ejecutando generalmente de una tacada en ensamblador o está saltando a alguna parte interna que ya tiene implementado lo que tu has hecho. También verás saltos raros a otras partes de tu código sin mucho sentido ni coherencia para ti. En general, lo que funciona en DEBUG funciona en RELEASE, y si no es así, ve buscando dónde está tu ]error.
2.- Es que no inicializas "ahora", por eso protesta el compilador, ya que estás copiando un valor (ahora.wYear) que no ha sido inicializado. En "sip" tendrás no sólo la misma basura que en el otro lado, sino que al tener basura quizás (lo más seguro) no haya un terminador nulo al final de wYear y estés sobreescribiendo un buen montón de memoria.
Aparte, el wYear es un WORD, un número, y tu estás poniendo un especificador de cadena, con lo que todavía la estás liando más.
3.- Si pones "%02d" en el especificador de cadena, lo que sobre a la izquierda se rellenará con ceros. En el caso que te pongo, al ser "02" es dos dígitos rellenos con ceros por la izquierda.