Simply set warn-on-reflection true and test your expressions with a function where the type can't be resolved.
REPL:
(set! *warn-on-reflection* true)
(defn testo [s]
(str s))
=> #'user/testo
(defn testo [s]
(.charAt s 1))
=> Reflection warning, NO_SOURCE_PATH:2:8 - call to charAt can't be resolved.
(defn testo [^java.lang.String s]
(.charAt s 1))
=> #'user/testo
(defn testo [^java.lang.String s s2]
(.charAt s2 1))
=> Reflection warning, NO_SOURCE_PATH:2:8 - call to charAt can't be resolved.
(defn testo [^java.lang.String s & more]
(.charAt (first more) 1))
=> Reflection warning, NO_SOURCE_PATH:2:8 - call to charAt can't be resolved.
And finally
(defn testo [s & ^java.lang.String more]
(.charAt (first more) 1))
=> CompilerException java.lang.RuntimeException: & arg cannot have type hint, compiling:(NO_SOURCE_PATH:1:1)
The short answer to each of your questions is no :(