A ver, por partes.
#menu li.final singinica que sólo se aplicaran las propiedades a un li que esté dentro de #menu y que tenga declarada la clase .final
En el siguiente ejemplo, sólo se aplican al segundo <li>
Código html:
Ver original<li> este no las toma, porque su clase no es ".final"
</li> <li class="final"> A este elemento aplicas las propiedades
</li>
Por lo tanto, sólo ese último elemento tomará las propiedades declaradas en "#menu li.final:hover" cuando pongas el ratón encima.
Pero antes de intentar aclararte todo, pues mezclas varios conceptos (selectores y distintas formas de aplicarlos, pseudoelementos...) me vas a permitirme la osadía de recomendarte
www.librosweb.es Ahí encontrarás 2 pdfs sobre CSS. Uno es una introducción y otro es "avanzado". Lógicamente, comienza por la introducción
Sobre tu última cuestión.
Si tenemos un elemento (un enlacepor ejemplo) con las siguientes propiedades:
Código css:
Ver originala {
background-color: #cdcdcd;
font-size: 1em;
text-decoratión: none;
color: #444;
}
La única manera de que esas propiedades se anulen o cambien al poner el puntero encima es declararlas exprésamente para a:hover. Y no hay forma de decirle globlálmente que "none" a todo
Un saludo