At a high level - API differences abound. While there are Mutex types in Abseil, Boost, and the standard, there are API differences in all cases. Some of those are due to the design priorities, some are due to platform compatibility constraints.
That gets at the most important answer to your question: what purpose do these libraries serve? In the broad C++ community, Boost serves as a very important space for experimentation and innovation: many of the most important concepts in the standard came out of boost (shared_ptr, optional, etc), or were motivated as language-level solutions to problems that Boost demonstrated were legitimate (foreach => range-based loops). However, Boost provides little in the way of compatibility promises over time: a user of Boost has basically no promise that the APIs they rely upon will be stable from release to release.
Abseil, on the other hand, is all about compatibility over time. If you are using it within the acceptable usage (
https://abseil.io/about/compatibility) every update to Abseil will work for you ... or, if we have to make an API-incompatible change, we'll ship a tool that makes that change easy for you. You should never be "stuck" on a previous version of Abseil because you can't afford to update, or something you depend upon is stuck - even a non-expert should be able to update all of their dependencies to a current version of Abseil with very limited guidance.
If you want the newest, shiniest, most exciting / cutting edge APIs and dont' care about long term support, use Boost.
If you want compatibility for pre-compiled code over many years, use the standard.
If you can build from source and want performance and (maybe) more user-friendly APIs, use Abseil.
Does that help?