Please go ahead T-Bolt

To make a longuer answer imagine 2 programs having 2 functions :
Program 1
DoSomethingSpecificP1
DosomethingCommon
Program 2
DoSomethingSpecificP2
DosomethingCommon
Obviously "DosomethingCommon" is something shared by the 2 program ,now a programmer has 2 choices :
Make a static link to the "DosomethingCommon" so Program 1 and 2 embed the code of the "DosomethingCommon" function.
Drawback : the executables will be bigger plus if you need to upgrade the function you need to recompile Program 1 and 2 and release another version to the customer.
Advantage : easy to code and build.
Now if the "DosomethingCommon" is a DLL you just release the DLL to upgrade both program.
nb : it's the simplified version ,a DLL can be code and ressources (like bitmap, menu, icons etc ...)