DLLはダイナミックリンクライブラリです。これは、コードやデータのコレクションであり、複数のアプリケーション(または他のライブラリ/モジュール)で使用できます。
そのため、たとえば、ファイルを処理したり、GUIコンポーネントを操作したりするための一般的な方法がライブラリで利用可能になり、複数のアプリケーションが同じ機能を使用できるようになります。これにより、同じものを複数回作成する必要が減るだけでなく、たとえば、共通のダイアログがアプリケーション間で同じになることも保証されます。
ライブラリは実行時にロードできるため、異なる並行アプリケーション間で共有できます。これは動的リンクと呼ばれます。
場合によっては、ライブラリをアプリケーション自体に含めることができます。これは静的リンクと呼ばれます。静的リンクは、異なるアプリケーションがそれぞれ同じDLLのコピーをロードするため、柔軟性を犠牲にして展開を容易にします。
ただし、静的リンクは常にオプションとは限りません。たとえば、.NETアプリケーションを静的にリンクすることはできません。ユーザーは、.NETアプリケーションを実行するために.NETライブラリーを持っている必要があり、ライブラリー(または.NETで呼び出されるアセンブリ)は実行時にロードされます。
DLLは、アプリケーションの作成に使用されるのと同じツールによって作成されます。具体的な詳細は、使用するツールに大きく依存します。