I am confused about the difference between a fork and a client, can someone explain? My understanding is that clients are different software environments which run on top of the decentralized computing infrastructure which is the blockchain architecture. The most popular of which by a large margin is Bitcoin Core. This made sense to me but I recently read that different clients process different types of transactions. For example, Bitcoin XT would process different transactions than the Bitcoin protocol. Would this not make it a fork of the original blockchain as opposed to a different type of software. How does Bitcoin Cash come into this also as they process different types of transactions but have their own blockchain? Should they not also be listed as a client?
Since everything is open source, anyone can take something, make some changes and it'll be different. 

Some good examples:


Dash
Dogecoin
Litecoin
Bitcoin Cash


Just a few examples of someone taking Bitcoin's core code, tweaking it, and releasing it. Given some of them did it in different ways. Doge for example started over with Block 0. It's considered a "new coin". While Bitcoin Cash used the history of Bitcoin up to a specific block, before their changes took effect. This is a hard fork. 

A node configured to run (or in some cases simply a flag in the config file) Dash, will not receive/process/store Litecoin blocks. The same way a Bitcoin node will not receive/process/store Bitcoin Cash blocks (once the block where the hard-fork occurred was hit). (I'm aware there are nuances to this but brevity is taking priority)

Finally to touch on your first point, there can be many clients for a specific coin. It's open source. There is no "official" client for Bitcoin as it's decentralized from the ground up. Some chains use a more centralized development process like the Ethereum Foundation. While they provide more input (as well as some communities have more sway over specific chains) it is ultimately up to the individuals running nodes on if they will upgrade and support the changes. This is best highlighted in the hard fork for Ethereum 25 October 2016. Those that did not fork were left with the original code and original coin now referred to as "Ethereum Classic".  Those that did upgrade, were then using the current day "Ethereum".

In the end no matter what client is used, it must follow the same basic protocols as the network it's trying to interact with. As long as it does, then it can be used.