The abbreviations are just a shortening of the library name the linker needs to use to find the library code to bind in. For example, -lXm tells the linker to look for either libXm.so or libXm.a, depending on whether it is doing dynamic or static binding. There is no general mechanism to avoid conflicts when naming libraries. The author of the library chooses a name and generally tries to avoid choosing a name which conflicts with any other libraries, especially the standard system libraries.
The linker does need to know which libraries are to be linked into an executable. If the compile and link step is being driven from 'make', then the Makefile will cause the compiler to be called with -l flags that specify the libraries to be used.