Las .class son genéricas, podemos tener el mismo class en varias etiquetas y así dar estilos generios
Los #id si son únicos de una etiqueta, no podemos tener mas de 1 etiqueta con el mismo id. Primordialmente usarlo para llamadas con JavaScript
En tus estilos, las declaraciones al final del documento anularan a las que sucedan antes en caso de conflicto.
Lo usual es solo usar .class.
Al usar #id estamos usando algo muy poderoso que en proyectos grandes puede ser muy tedioso editar, por lo tanto es mala practica usarlo para dar estilos, hay que dejarlos para uso exclusivo de JavaScript