For ABI additions, you're pretty much right (which means you can run older binaries on newer systems, but not generally vice versa). However, for ABI changes and deletions, soname compatibility is maintained pretty well for the vast majority of packages, and it is universally considered a bug if it is accidentally broken. Recently, even some of the odious old standbys like OpenSSL have come into the light. (Berkeley DB remains a frequent-breakage annoyance, but even it bumps its soname when appropriate. And often when not appropriate.)