And I don't mean "I learned how to do textbook RSA in college", I mean more of, "Can tease a previously undiscovered cache-timing side-channel out of a crypto library". (For example, the recent libgcrypt advisories.)
If the words "padding oracle" or acronyms like AEAD sound strange and foreign, that person is not qualified to fill that role.
I would wager most developers lack the background to make a messaging service that is actually secure. (To anyone reading this: Please don't let this fact magnify any sense of impostor syndrome you may have. You're far from alone. Even the experts won't embark on this endeavor without peer review.)
https://github.com/WhisperSystems/libsignal-protocol-c
https://github.com/WhisperSystems/libsignal-protocol-java
More generally (i.e. not for messaging apps), libsodium is great for application-layer cryptography:
https://download.libsodium.org/doc/bindings_for_other_langua...
In terms of how it compares to Signal: we are still in alpha (although Olm now ships on the develop branch of matrix-js-sdk and dependencies), and so obviously Signal is infinitely more mature. However, we are getting the core ratchet publicly audited during July before we push all the E2E formally live, which should give a better idea of how reputable to consider it.
https://matrix.org/git/olm/about/
I've not audited their implementation, but at least that one design choice is sane.
IIRC there were some design changes between the early Axolotl ratchet and the Signal Protocol. If you're interested in using Olm, I would make "find out what the differences are and why" my first priority.