http://www.pathname.com/fhs/pub/fhs-2.3.txt.gz
the FHS (filesystem hierarchy standard) is the standard most distros obey, the naming conventions answer at least 1 first questions, basically software gets installed in 3 main places
fir theres the main dirs
bin - were the programs are
sbin - restricted programs go here, mostly ones that usually root would us
lib - libraries
and were this all goes (the above 3 dirs go into each one, along with some others (maybe.. depends on the distro)
/ - root dir, this place is only for system files needed for the system to work, boot, and mount other file systems
/usr - this is for regular programs the distributions would install, this is split to allow it to be on a separate partition, and for organization
/usr/local - for user installed programs, like ones you compile yourself, this way they dont get mixed in with system/distro programs
there also
/usr/games - some distro put games into its own separate place
you can easly enough add places of your own, X takes /usr/X11R6, gcc goes for /usr/gcc-[system arch] ..... buts its best to play along with what your distro provides so things don't get messed up
so for #1, it can be any of 3 places, usually only 2, then there X, gcc, and quite a few distros put games into there own dir... also /opt , is another place (in gentoo it seams its mainly used for big softwares, like blackhawk (java), open office, and some binary games
for 2, drivers is such a relative term, kernel drivers can be compiled into the kernel and not "installed", drivers for printer, X, or other devices can be for separate programs, and the programs would say were they go ... (kernel "modules" (may be drivers, or serve some other purpose) go into /lib/modules/[full kernel name, and version]
so its a bit messy if you want them all to be in 1 place ... anyways, just adding to what
musicman_ace said