Фича, какие ж они динамические если бы была привязка к точной версии )
С версией это имя реального файла, но еще есть симлинки. В итоге вроде возьмется самая свежая доступная в системе если не указывать версию.
И не уверен точно, но по-моему есть привязка к первому числу из версии, то есть программа скомпилированная для libz.so.2 не будет работать если есть только libz.so.1 или libz.so.3
Потому что первое число по идее должно меняться только при наличии несовместимых изменений.