What’s the difference between “visibility” and “display”?
The visibility property only affects the appearance of that node’s content (either by showing it, or not), but display affects the appearance of the entire node. This latter effect is often used in drop-down menus or outlines because the placeholder space created by visibility: hidden can ruin the illusion of a menu opening and closing.
In terms of menus, using visibility was more common as it allowed Netscape 4.x to participate (although you can hide elements using display: none in that browser, you basically couldn't show them again). Now most use display to create this effect.