This website explains the infamously difficult to understand Paxos consensus protocol using easy to understand invariants and code. Before you start, make sure you are familiar with the terms in the word cloud above. To help you get familiar with these terms, you can check out the high-level glossary.
This website has an easy to follow flow: First it explains Why? Paxos is used in distributed systems. Then it covers How? Paxos works using invariants and pseudo-code. By this point you would understand the Paxos protocol in its most commonly used form, namely multi-Paxos. For those that want to learn more, the limitations of multi-Paxos and practical issues are covered in When? Paxos works.