1. чаще всего да, но если очень надо то можно указывать зависимость с точностью до минорной версии. например при минорном update могла добавиться новая функци, это совместимости не вредит (при правильном использовании конечно)
2. значит не судьба

или указывать указывать список возможных версий при импорте
3. значит это новая версия и звать функции с неизменившимися сигнатурами скорее всего опасно. т.к. они могут иметь side effects
инициализацию модуля я привел в качестве примера, что делать если сигнатура функции (т.е. распределение аргументов по регистрам) не поменялась, но поменялись значения кодов возврата, т.е. раньше 0 означал успех, а в новой версии - ошибку. линкер это проглотит, но программа работать не будет... можно придумать и другие варианты.