Последний селектор не будет работать, потому что пробел подразумевает связь (в данном случае потомок) между селекторами.
li.highlight /* defines an element of 'li' with a classname of 'highlight' */
li .highlight /* defines an element of class 'highlight' that's contained within an li element */
li > .highlight /* as pointed out by Neil (in comments), this would select an element of class highlight that is an immediate child/descendant of an li */
Я должен объяснить, как я использую фразу "не сработает". Очевидно, я использовал вашу фразу, и я сделал это по ошибке.
Это будет работать, просто он выберет - как объяснено в комментарии - элемент, которого у вас нет в разметке.