Dlaczego tak
Pseudoelement wskazuje fragment elementu, który nie istnieje w kodzie HTML jako osobny znacznik — ::first-line obejmuje pierwszy wiersz akapitu, a w CSS3 zapisuje się go podwójnym dwukropkiem. a:hover to pseudoklasa, która opisuje stan całego elementu (kursor nad odnośnikiem), dlatego łatwo ją pomylić. input[type="text"] to selektor atrybutu, a .menu > li — selektor dziecka.