Because when you use a DLL the pseudo lib you link forwards the link to the dynamic library.
Objects as shell32.lib and kernel32.dll are pseudolibs, that create entries in the import section of the executable PE file.
The OS loader scans the import section, load DLL in the process memory and copy required functions entry address in the bind table.
Your program when calls a DLL function points to the bind table then jumps to the DLL entry loaded in the process space.
When you create a new DLL with PellesC, or any other compiler, the linker creates also a pseudolib for the dynamic linking.