One sentence is enough to separate them: home contents insurance pays for your own belongings, private liability insurance covers the damage you cause to others. Everything else follows from that.
The simplest way is to go through concrete situations. What follows describes the logic of the two types of cover; what your contract actually covers depends on its general terms and conditions.
A leaking washing machine
The water damages your own parquet floor and comes through the ceiling of the neighbour below. Two different types of cover come into play for a single event: home contents insurance for your things, liability insurance for the neighbour's. This is the situation that explains why the two are so often confused — they turn up at the same time.
A bicycle stolen from the cellar
Nobody else suffers a loss: the stolen item is yours. So this is a matter for home contents insurance. Theft is often part of the basic cover for the home, but the treatment of bicycles and valuables often falls under an extension or a specific limit, which you check in the policy and nowhere else.
A damaged parquet floor in a rented home
This is not a special case; it is the rule applied as it stands: the home belongs to the landlord, and so to a third party. A scratched parquet floor, a broken-in door or a burnt worktop is damage caused to someone else, even though they are in your home. Liability insurance is the cover concerned, and it is also why many landlords require one.
Who owns the damaged item?
The question is not “which insurance do I have?” but “who owns the damaged item?”. The answer points to the cover, before you even open the contract.
Many households hold both, sometimes on a single policy. The bundling is commercial, not legal: knowing which of the two covers what avoids reporting a claim in the wrong place, or believing you are covered for something you are not.