Esa duda de CSS es bastante básica. Creo que estará explicada con más detenimiento en el Manual de CSS, pero te lo comento rápidamente por aquí.
La diferencia fundamental es que los selectores por identificador están pensados para que el elemento que seleccionas sea único. (Dado que los identificadores (atributos id) de los elementos de la página no se deberían repetir, es decir, los identificadores deben ser únicos).
Sin embargo, las clases están pensadas para poder definir el mismo estilo a varios elementos de la página. Es decir, puedes asignar una misma clase a varias etiquetas sin problemas. De hecho, las clases están pensadas justamente para que las utilices en diversos elementos distintos en la página.
Por ejemplo, si tienes una página con un menú de navegación que aparece una única vez, podrías asignarle un id a la capa donde está la barra de navegación. Ese ID sería único, porque no hay otra barra de navegación igual a esa en la página. El id sería único y entonces sería viable aplicarle el estilo mediante el selector de identificador. Ahora bien, si esa misma barra de navegación la quieres repetir varias veces a lo largo de la página tendrías que crear una clase (class de CSS) y asignarla a cada una de esas barras. De ese modo definirías el estilo una única vez y lo reutilizarías un número indefinido de veces.
Dicho sea de paso, es más interesante aplicar estilos a partir de clases, debido a que esas declaraciones de estilos podrían ser reutilizables.