DLL's as defined by MSDN:
"DLLs are executable modules that contain functions and data. DLLs provide a way to modularize applications so they can be loaded, updated, and reused more easily."
They are not distributed "Willy-nilly" in Windows systems, they are compiled, shared, registered components that are crucial to the running of many windows applications. In an NT environment, with three tier architecture as opposed to traditional client-server, dll's can reside on the business rules server as well as the database server and in conjunction with Microsoft Transaction Server(MTS). This placing of dll's away from the client machine enables developers to update these components centrally so that applications on individual machines do not need to be updated when new functionality is added or modified. This is a major advantage in an large multiuser or enterprise environments for both users and developers. Naturally, network traffic will be increased depending on the size of the dll's and the frequency of their use, so software like MTS can help manage components in-process and track usage.
dll's can be written in many languages in the Microsoft developement environment such as Visual Basic, Visual C++ and Visual J++. When compiled, all these components can interoperate with themselves and many other applications at the same time.