The directory hierarchy in Linux is supposed to follow the Filesystem Hierarchy Standard, but it still differs a bit between different distributions. You can find the 2.2 draft of the standard here
. It explains the standard in depth.
User friendly doesn't have to mean "as easy as possible to understand", and since Linux comes from a Unix tradition the traditional Unix names have been preserved in order to maximize compatibility and ease of use. Spaces in filenames have to been escaped, so in order to cd to a directory called "My Files" you would have to type cd My\ Files
or cd "My Files"
, and shorter names are quicker to type.
Windows suffers from several problems where multiple versions of the same libraries (*.dll files in Windows, *.so in Linux) can exist at the same time and interfere with one another. Linux has a smarter way of dealing with this, keeping the libraries in /lib, /usr/lib and /usr/local/lib. A program called ldconfig scans these directories for libraries and generates a list of what librabries are avaiable and which ones to use in case several libraries with the same names exist.
Similarily, all binaries are kept in /bin, /usr/bin, and /usr/local/bin.
The root folders - /lib and /bin most notably, contain system critical libraries and files. To name an example, module (driver) management programs are stored in /bin and modules in /lib/modules.
The /usr hierarchy contains the bulk of the software on the system while /usr/local contains locally built software, meaning software that doesn't come from your distribution but is built from source on the local machine.
For more info, read up on the link I provided above.