¿Por qué? #main o .main

Hola! buenas tardes y muchas gracias por todo! Realmente un aporte magnífico el sitio y sus integrantes.

Mi preguna está relacionada a un detalle que noté navegando diferentes tutos vinculados a CSS. Tomando como ejemplo una declaración del main, noté que en algunos casos se encuentra con # (numeral) y en otros con . (punto) delante del selector,

¿Hay alguna diferencia vinculada a versiones de CSS o alguien sabe de que se trata ?

Desde ya gracias !

Abrazo.

Elitoqac.
Si, cuando vos en alguna parte de tu html escribis por ejemplo
<p class="main">Hola</p>
Como es class, comienza con un punto ( . ), en cambio si le ponemos una ID ira con #, por ejemplo: <div id="global">, en la hoja de estilos pondremos #global, si nosotros cambiamos la id por un class, es decir, <div class="global"> usaremos el punto, no se si me explico, las clases van con puntos ( . ) y las ID van con numerales ( # ).
Hola:

Además de la explicación dada por el compañero hay que tener en cuenta lo siguiente:

Si un <div> se usa UNA sola vez en una hoja de .html se llamará "ID"
Si se usa MÁS DE UNA VEZ deberá llamarse "class".
Por ejemplo:

EN LA HOJA .HTML
<div id="menu">

<div class="sub-menu">Foto</div>
<div class="sub-menu">Explicación</div>
<div class="sub-menu">Otra Foto</div>

</div>

Es decir, dentro del menú hemos incluido varios sub-menús que tienen las mismas características que damos en la hoja de estilos:

EN LA HOJA DE ESTILOS
#menu {background-color:RED}
.sub-menu {background-color:BLUE}

Generalmente las capas que usan <div ID> son la cabecera, el contenido y el pie, ya que una hoja .html sólo lleva 1 cabecera, 1 contenido y 1 pie...
Las que se incluyan dentro de estas se llamarán <div class>.

A parte de lo anterior y como lo anotaba el compañero, se puede implementar ID o class en

</p>, <a></a>, <img >, etc...

Un amigo desde Colombia,