You can use "lein deps :tree" to detect what different libraries depend on. Specifying an explicit Clojure dependency in your own project should override anything used by downstream dependencies. "lein ancient" is also useful in finding out of date dependencies.
I am not aware of any binary incompatibilities from using 1.5.1 AOT compiled code in Clojure 1.6 (we did provide shims and do a bit of testing to fix issues in this area). Binary compatibility across releases is not guaranteed, but it is something we strive to maintain if possible. One area where things do differ is in the hasheq functions used in hash maps and sets (which affects the sequence order for those - that order is not defined and it will change from 1.5.1 to 1.6.0). There were some potential issues around "case", which changed in implementation in 1.6, but that was reported and fixed before the final release and I tested with 1.5.1 AOT compiled classes to verify.