DLL files are Dynamic Link Libraries.
A DLL is the same as an EXE, but it does not have header information.
The purpose of a DLL is to have functions and procedure in other files, so that multiple exe can use those functions/procedures. Also DLL make your final EXE smaller.
DLL are windows specific, in Linux they are SO i think, in OSX I don' know
Read more on wikipedia.
The header is the part of the binary that tells the system which procedure to load at first, that procedure will load the whole program, this is why in C and C++ you have a "main" procedure.