4.) If I watch the output of puddinpop's software, occasionally it spits out "Found Hash!" and it reports something that looks like a hash with leading zeros. Why is the software finding more of these than one per 10 minutes? I guess there are multiple possibilities for each block and whoever returns the first block hash with the correct amount of leading zeros is assigned to that block?
Assuming that you're in a mining pool, the hashes you find and submit are likely not blocks, they are shares. They are basically blocks, but with an extremely low difficulty, so you can find a lot to prove that you are trying to find hashes for real blocks. Eventually, someone in the pool finds a hash that works on the low artificial difficulty and also works for the real difficulty. The pool submits it as its own and collects the coins. Everyone in the same pool is hashing the data for the pool's address.