as i understand it, merkle trees are useful for operations within individual blocks, but do they have any use outside of each block? for example, are the merkle-roots from each block ever used in combination for any other purposes such as blockchain validation?
The merkle tree means that you can verify the existence of a transaction in a block while only having the header, the transaction, and the merkle tree itself. It allows SPV clients to act extremely quickly and securely while only using the bare minimum of bandwidth. MultiBit is a SPV client that works in this way, and is extremely quick as a direct result.