Stacking just means that some module calls functions defined in another module. There is an example right on the page you cite. According to the figure, lp is a driver for printers on parallel ports. It makes calls into the generic parallel port driver parport. There are several different kinds of parallel ports, and each has its own low-level driver; the most common one is parport_pc. On current kernels, it's actually parport_pc that calls functions defined in parport, and not the opposite as the figure suggests. Of course, all of them make calls to basic kernel features (which aren't in modules).
There are a lot of similar cases. For example most storage (disk) drivers communicate with (a variant of) the SCSI protocol, so they make calls into the generic scsi_mod module. The usb_storage module makes calls into both sci_mod (for the storage aspects) and usbcore (for the USB aspects).
You can see the dependencies for all the modules you have installed (i.e. what modules call functions from what other modules) in /lib/modules/*/modules.dep (there'll be a lot of them). You can see the dependencies for modules that are currently loaded with lsmod; for example the following output line shows that parport_pc, ppdev and lp all depend on parport:
parport 27954 3 parport_pc,ppdev,lp
Here's a small script that generates a dependency graph for the modules you have loaded. You need to have graphviz (available in most distributions).
lsmod | awk '
BEGIN {print "digraph modules {"}
END {print "}"}
NR != 1 {split($4, a, ","); for (i in a) print a[i], "->", $1;}
' | dot -Tpdf >lsmod.pdf