Bitcoin Cash is a fork of Bitcoin which was created during a controversial time in Bitcoin history.
If you don't know what a fork is, check out my other article, "Bitcoin Forks"
Adoption was going through the roof, and with it was rising transaction times and average fees. People were essentially competing to get their transactions handled faster with higher fees. Developers involved in the ongoing work on Bitcoin were scrambling for solutions.
The Bitcoin network organized in a giant list of data sets, called blocks, which hold a number of transactions. These blocks are inherently connected to the previous block on the chain through their cryptographic hashes. This is how the cryptocurrency is able to maintain thousands of addresses with millions of transactions moving money between them, without allowing bad actors to inappropriately spend their funds or, worse, spend funds that don't exist at all.
These blocks had an arbitrary limit applied to the filesize to prevent spam on the network, but with adoption increasing, this limit was becoming... well, limiting, to the continued scalability of the network. When you sent a transaction, you had to wait for the queue of transactions already submitted before you to be placed into their own blocks, and higher fees take priority. You could end up paying double fees and be waiting half the day for your money to get there. If you were trying to pay at Starbucks, your coffee would long be cold by then.
A suggested solution was to simply increase the maximum size of blocks. Allow enough room for all the queued transactions, that way your money would be moved as soon as the next block was processed. This would work in the short-term, but the problem is, where does it end? More people use Bitcoin and the network gets more stressed until block sizes must be increased more and more.
Larger blocks take more storage space, more bandwidth, and take longer to transmit over the internet. During this slow time, the network can be more vulnerable to forks and invalid blocks. For example, one miner solves a block and while it is broadcasting, another faster miner owned by a large server farm solves the same block and broadcasts it faster. This leaves the first miner with a stale block.
Segregated Witness, or SegWit is a soft fork (backwards-compatible code change) of Bitcoin which moved certain signature data to the end of blocks. This inherently changed how transaction hashes are generated, making them harder to manipulate on the receiving end, and decreasing the size of the transaction data considerably. By removing the signature data from the end and broadcasting, a new SegWit system can even send bitcoin to an outdated node with old block size limits.
This change allowed for side chains like Lightning Network to be possible, because it requires solid transaction and block hashes that can be depended upon for future blocks' computation. Without SegWit, money placed on Lightning could be considerably more vulnerable to breaking due to a transaction being modified and losing track of where the funding came from.
Many believe this side-chain ability goes against Bitcoin's objectives and creates more centralized networks which sacrifice many of the security features of Bitcoin. It was a controversial change which ultimately came to a head with Bitcoin Cash.
Supporters of Bitcoin Cash were interested in keeping Bitcoin as a medium for exchange as opposed to a larger-scale investment system with high transaction fees. They accepted the possibility of smaller nodes not being able to handle the large block size, as this would favor the lower transaction fees and faster transactions they desired for a better end user experience.
Since the split, a number of changes have taken place on Bitcoin Cash, with another controversy leading to a split of Bitcoin SV from Bitcoin Cash. SV has plans to remove block size limits entirely, allowing the network to come to a consensus on its own for the maximum size of blocks.