I think to explain it, one must first understand the concept of 'finality'. What does it mean for a transaction to be 'finalized' and not altered?
Side note: Bitcoin doesn't propose to have this fixed under all circumstances, but it does give some good probabilistic assertions on how likely a transaction can be overturned as blocks go by (based on the blockchain metrics we're able to collect).
In the digital world, all data can be duplicated. How then can we make a currency in which people aren't able to duplicate the data at will? Without this, we can never have 'finality' to a transaction. In the case of money duplication, the same unit of value earned once can be spent multiple times, potentially invalidating earlier transactions to keep the integrity of the money supply. So the problem of double spending asks how we can prevent a unique token of value from being used twice?
Potential solutions
We can add certain validation mechanisms to the data, but who would be performing these validations? One proposal is a trusted centralized entity. Of course that means they can always change the rules at will, so how can we trust them not to?
One way is to spread the validation across as many participant as possible and make it hard for validators cheat (from the difficulty of overturning already validated data, and the consequence of waste if unsuccessful). In the form of Bitcoin this is represented by the set of bitcoin nodes that many hodlers run today. The validation mechanism being dependent on miners, who have the permissionless role of first processing the transactions in a way that is not easy to duplicate and has a tremendous cost of failure (failure to reorg the chain will result in a lot of wasted money for a miner).