First, do all bitcoin miners, regardless of what pool they are attached to, mine the same single block? For example, if a miner is solo or several miners are in a pool and the block is solved, do all miners everywhere in the world stop work and then start mining a new block (next in sequence), ie one block at a time? Or can miners choose from a variety of blocks to mine?
Every miner works on the next block, but the contents of the next block is different for each miner. Miners are free to choose which transactions to include and exclude from a block. Miners race to make their block the next block.
Second, my layman's understanding of mining says that the input to create the hash is somewhat random? and largely based on the preceding attempts output hash. For example, an output hash is generated and that output is then used as input for the next attempt by the miner. Is this essentially correct?
The input for the hash is the block "header", which contains information about the block. The header also contains the previous block's hash. This chain of hashes determines the sequence of the blocks and also is why it is called a block chain.
Third, is the difficulty level based on the amount of leading zeros in the output hash? For example if the bitcoin algorithm is calling for a high difficulty level, then the amount of preceding zeros required in the output hash is much higher, but if the algorithm is calling for a lower difficulty then the amount of preceding zeros in the output has is lower?
No, that is a common misconception. While counting the number of leading zeros was mentioned in the whitepaper, Bitcoin was never implemented using that. In the actual implementation, the block's hash must be less than a "target" hash (compared as numbers) in order to qualify. The difficulty is computed from the target hash value (it is the inverse). It is used as a metric by people but it is not used by the protocol.
Of all the 6 elements, is it the Block Time alone that guarantees everyone is working on a random hash? To ask another way, if Block Time wasn't part of the header, would everyone be working on the same hash making it a contest of which miner is the fastest?
The nonce field is also used for varying the hash. In fact, that is its only function.
In addition, the merkle root can be varied by modifying the contents of the block. Since the coinbase transaction pays a different address for each miner, its hash will be different for each miner, and thus the merkle root will be different for each miner, and the block's hash will be different for each miner even if everything else is the same.