So, i'm running puddinpop's rpcminer for a gpu.

1.) I assume it is searching for a new block such that the new block is linked to the latest block in the block chain.

Correct

2.) I think I read that a new block is found based on the number of leading zeros in the output hash for the new block computation. Is there a way to query for the number of leading zeros required?

Yes, it is the "difficulty" factor. You can see it at bitcoincharts.com. It is currently about 36000.

Expressed as "number of (hexadecimal) zeroes", you could calculate that as: log2(difficulty)/4 + 8, which right now is about 11 or 12. (It is not strictly number of zeros, it's "is the hash less than a number (that number being 2^224 / difficulty)")

3.) There is something running to make sure that a new block is only found every 10 minutes. How does the p2p network control this?

It's average 10 minutes. The difficulty is the only control. As mining increases sharply, the average time decreases, and then the difficulty jumps even more to correct for it.

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?

Yes, there are practically infinite possibilities for each block. Since each miner is trying to commit a block that includes a transaction to him/herself, every miner is hashing something different, no two miners are trying to hash the same thing.

5.) I also think I read on a page that the bitcoin network asseses the number of blocks created in the past two weeks and uses that to scale the processing power required to find blocks such that the combined cpu power of the network will only find 6 blocks per hour. I assume this is controlled by increasing or decreasing the number of leading zeros required in front of a hash for a new block. Does the network enforce this by deciding every two weeks how many leading zeros are required at the front of new blocks?

Yes, it is done by increasing the difficulty, which effectively means more leading zeroes are needed.