For me, trying to read the actual protocol or even tutorials that try to explain the protocol in a more approachable manner, didn’t help at all. It’s no understatement that ActivityPub itself is a mess.
But reading the Fedify documentation and describing “activities” with the library helped a lot more!
Even if you don’t plan on writing Js/Ts, I recommend the Fedify tutorial.