Complementando a lo de kseso?...
La diferencia entre tus dos códigos es que en el codigo ejemplo 2, si existiese un elemento (.caja2) FUERA del contenedor (#contenedor) en el documento html, el estilo CSS no afectará al elemento.
En cambio si escribes el primer ejemplo de código que presentaste, CUALQUIER elemento dentro de tu documento ya sea .caja1 .centro o .caja2 podra llevar el estilo CSS descrito.
Es decir que #contenedor div.caja1 {} solo vale para divs que esten dentro de #contenedor y ninguno que este fuera...
saludos