Hola, en la solución de wilfrido entre la serie de 8 cuadrados de colores y el párrafo hay una separación gracias al margin-bottom: 20px;
Entre el párrafo y las tres franjas de colores inferiores hay una separación gracias a que el párrafo introduce por defecto un espaciado entre el párrafo y el elemento inferior. Este margin no está declarado en el css, es algo que introduce el navegador por defecto cuando representa un elemento <p> ... </p>. Recordar que algunos elementos llevan aparejados estilos por defecto. Estos estilos por defecto pueden ser eliminados con "reglas de reseteado", es decir, reglas donde específicamente declaremos que anulamos ese estilo oculto. Por ejemplo si declaramos el estilo p {margin:0;} estamos anulando el estilo por defecto que introduce el espaciado de los elementos p.
La propiedad clear no introduce un espaciado entre elementos, simplemente rompe el flujo generando un nuevo bloque a continuación del flujo anterior.
El margin-top del sel #nueve básicamente no sirve para nada.
Lo mejor para comprobar qué afecta y qué no afecta es hacer pruebas, es decir, introduce o elimina reglas y vete comprobando los efectos e interpretando el por qué de los resultados que obtienes.
Salu2