Estas llamando a CommandLineToArgvW por lo que te devuelve cadenas anchas donde cada caracter ocupa 16 bits. A printf le podes pasar %ws para comprobarlo.
Si pero es algo para el ensamblador (MASM), el procesador entendera los opcodes pero si el ensamblador no reconoce las instrucciones no los va a generar en primer termino.
Si usas .686 no necesariamente funcione tu programa en un procesador 486 por ejemplo, puede ser que uses instrucciones que no sean reconocidas ... entonces haciendo .686 las habilitas para el ensamblador.