(Transferred from Wiki by Peter)
Note on Unix programs: Windows programs generally put all or most of their files in one directory. Program x might be in c:\program_crud\X, for example, and Y might be in c:\games\Y. Unix uses a much more efficient (but also more confusing to some) system where, instead of dividing files by program, files are divided by purpose. Binaries go in one place, config files in another, and data in yet another... This can be quite confusing for a user migrating to Linux from Windows, and this should help you locate stuff... Hopefully.
/ - This is the root directory. Under windows, DOS, OS/2, and cousins ( I will refer to them as *nix during the course of this document), there's a separate root directory for each drive or partition. Linux and other Unix variants put everything in one directory tree, and this is at the base. There's generally not much in here other than directories, although kernel images might be 'stored here too.
/boot - Some distros store kernel images and other miscellaneous files needed to boot here.
/tmp - Generally only temporary files needed at boot. Things that need temporary storage after boot generally use /var/tmp, but this isn't universal by any means.
/mnt - This is where directories go for mounting various miscellaneous/temporary filesystems. Sometimes, /cdrom and /floppy are used for mounting cdrom and floppy devices, but I'm not sure how many distros other than Debian do this. /mnt is also sometimes called /mount. If the /floppy and /cdrom devices are not used then that's 2 less things the system has to monitor.
/lib - Libraries needed at bootup. Libraries not needed at bootup but needed after the system is running should go in /usr/lib. Kernel modules generally go in /lib/modules/<kernel-version>.
/dev - Device files go here. These are special files created by the *nix kernel that can be used by programs to control hardware devices. Note that network interfaces (eth0, ppp0, etc) don't exist here, harddrives (hda,hdb or C:/, D:/), cdrom(s) (/cdrom, /cdrw), and your floppy drive (fd0), does. Note: Not all devices are named the same from *nix to *nix.
/proc - This filesystem doesn't actually exist on disk. It contains files that provide information about the state of the computer, including info on running processes, hardware states, and memory usage. Most of the files aren't easily read by humans, though.
/var - Contains data changed when the system is running normally. /var/tmp, for example, should be used for storing temporary files. Various processes and daemons dump logs here, and some important subdirectores are:
/var/lock - Lock files. These are created by programs when accessing a specific resource. They don't actually prevent access, so respecting a lock file is more of a politeness thing. Most programs do respect them, and thus you don't have to worry about them unless you're writing a program.
/var/log - Log files are generally written here. This directory may grow quite large, and so may require regular cleaning.
/var/run - Contains various bits of runtime information.
/var/lib - Contains various files needed while the system is running. One that will almost definitely be of interest to laptop users is /var/lib/pcmcia/stab, which contains some information about PCMCIA devices.
/var/spool - Mail, news, and printer queues get stored here.
/root - Home directory of the root user. Shouldn't be much stored here at all, as you should be using normal, unprivilaged users for anything that doesn't require root privilages.
/home - This contains the home directories of most of the users on the system. You can type cd to return to your home directory, and you can use ~/ as a shortcut to refer to your home directory. Personal config and data files for normal users go here.
/etc - Probably where you'll spend most of your time as root, this is where most system-wide configuration files are stored. Files for specific users are almost always stored in the user's home directory. The contents will vary depending on what you've got installed, but some subdirectories that are probably of interest are listed below.
/etc/X11 - This is where system-wide X11 configuration files are stored. XF86Config stores data used by the server to set up the environment. /etc/X11/fonts is where the fonts used by the server are stored, and window managers generally create subdirectories for their config files.
/opt - For large software packages that wish to avoid putting their files throughout the filesystem, /opt provides a logical and predictable organizational system under that package's directory. This gives the system administrator an easy way to determine the role of each file within a particular package. For instance: /opt/oracle
/usr - files that can be shared across a whole site (server). /usr/doc (documentation), /usr/share (themes, icons, etc), /usr/lib (program libraries) are stored here.
/usr/local - for use by the system administrator when installing software locally. It needs to be safe from being overwritten when the system software is updated. It may be used for programs and data that are shareable amongst a group of hosts, but not found in /usr directly.