Botan uses semantic versioning for the API; if API features are added the minor version increases, whereas if API compatability breaks occur the major version is increased.
However no guarantees about ABI are made between releases. Maintaining an ABI compatible release in a complex C++ API is exceedingly expensive in development time; just adding a single member variable or virtual function is enough to cause ABI issues.
If ABI changes, the soname revision will increase to prevent applications from linking against a potentially incompatible version at runtime.
If you are concerned about long-term ABI issues, considering using the C API instead; this subset is ABI stable.
You can review a report on ABI changes to Botan at https://abi-laboratory.pro/tracker/timeline/botan/