Goede vragen! Principe is dat alles wat niet nodig is niet geschreven wordt. Die beantwoordt eigenlijk al de eerste vraag over #navigatie li ul li en #navigatie li li. Als beide op hetzelfde neerkomt dan heeft de laatste de voorkeur.
Zelfde met het tweede voorbeeld ul#navigatie, die hoort dus eigenlijk niet in mijn voorbeeld. Ik heb de (in principe dus slechte) gewoonte om bij de eerste in een rij van CSS-regels over bijv. #navigatie, de naam van het HTML-element, in dit geval ul, te vermelden. Puur voor mijn eigen overzicht. De volgende CSS-regels die dan ook hetzelfde element betreffen maar dan bijv. #navigatie a, geef ik die ul niet. Maar stel je wilt de naam #navigatie toepassen op meerdere elementen, dán wordt het noodzakelijk om te gaan werken met ul#navigatie en bijv. div#navigatie.
Om het maar even af te maken:
li:hover a = de link die staat in het lijstitem-waar-je-met-je-muis-overheen-gaat
li a:hover = de-link-waar-je-met-je-muis-overheen-gaat die staat in het lijstitem.
ul #navigatie = het element met de naam navigatie dat staat in de ul.
ul#navigatie = de ul met de naam navigatie.