Correct - type declarations in arguments are (almost all of the time) only used for informing dispatch. The only exception I know of is when julia avoids specialization on purpose, all other cases are always specialized depending on the runtime type (if statically inferred, ahead of time, otherwise dynamically at runtime).
To be clear here - annotating types in arguments does (almost) never improve performance (and probably never in the cases you’re thinking of). In the vast majority of cases it will only limit the types of objects allowed to be put in (which may be a smaller set than what could actually be put in based on the functions that operate on any given argument).