Ok, even cooler... I presume that from your experience, it is easier to use old devices that don't require so much coding, such as old printers etc.
Keyboard and mouse are the easiest. They support so-called "Boot protocol" intended for use in PCs before OS loading - such as POST, BIOS config and such. In this protocol, keyboard data format is fixed - the fact that you don't need to parse report descriptor simplifies code significantly.
From reading the pages you have written about it and the examples you have done, I presume that the arduino could be programmed to run different code depending on what device is plugged in...
Current code supports single device on the bus; switching devices on the fly is possible. At present, multiple devices on the bus are supported in data structures of the USB library only; in the future, I may add code to support multiple devices or throw it away altogether to save space depending on how people would like to use the thing. The limitation is, again, Arduino resources - the keyboard polling sketch I mentioned earlier in the thread compiles into ~6500 bytes binary; this does not look like much, but, again, keyboard is the simplest of all USB devices.
On this image, are the 16 lines the ones on the left?
This is correct. Inputs are on the top, outputs on the bottom. To support 5V levels GPIO lines are also equipped with level translators (74AHC245 and 74HCT245 ), which can be mounted in the spaces provided.
Also, from the looks of it, the shield is not stackable/it has to be on the top, correct?
This is correct.
What configuration options are there regarding pin use?
There is an article about this -> http://www.circuitsathome.com/mcu/arduino-usb-host-shield-build-log-part-4
3 SPI signals are hardwired, 4 control signals have jumpers and can be re-routed.
If you have more questions, please ask.