I'm confused about the difference between a fork and a customer. Can someone explain?

Since everything is open source, everyone can do something, make changes and it will be different.

Some good examples:

  • stroke
  • dogecoin
  • Litecoin
  • Bitcoin Cash

Just a few examples of how someone uses Bitcoin's core code optimizes and publishes it. Some of them did it in different ways. Doge, for example, started from scratch with block 0. It is considered a "new coin". While Bitcoin Cash used the history of Bitcoin up to a particular block, the changes took effect. This is a hard fork.

A node configured to run (or in some cases just a flag in the configuration file) Dash, will not receive / process / store Litecoin blocks. In the same way, a Bitcoin node does not receive / process / store bitcoin cash blocks (as soon as the block in which the hard fork occurred has been hit). (I am aware that there are nuances, but brevity has priority)

If you want to address your first point again, there may be many customers for a given coin. It is open source. There is no "official" client for Bitcoin because it is decentralized from the ground up. Some chains use a centralized development process like the Ethereum Foundation. While they provide more input (and some communities have more impact on specific chains), it is ultimately up to the individuals who run nodes to update and support the changes. This is best highlighted in the hard fork for Ethereum October 25, 2016. Those who did not go away were left with the original code and the original coin, now called "Ethereum Classic". Those who upgraded used the current Ethereum tag.

Ultimately, regardless of which client is used, the client must follow the same basic protocols as the network with which it is trying to interact. As long as it works, it can be used.