Paxos has to be one of the trickiest, but also the most important, algorithms in distributed systems.
Whenever you need consensus in a distributed setup, you usually end up with Paxos or Raft. Although most people find Paxos difficult to understand, here is an intuition that I feel makes it much easier.
Hope this helps.
Btw, this is a snippet from my latest write-up on Multi-Paxos, which is used by distributed databases to achieve and maintain consensus.