1. If the DLL is used by only one .NET application, then it can simply be placed in the same folder as the application itself and the .NET framework will find it.
2. If the DLL is shared by multiple .NET applications it should be placed in the global assembly cache, using gacUtil so that the .NET framework will find it.
3. If the DLL is used by applications which are not .NET e.g. VB6 applications then it must be registered using RegAsm so that it can be found in the same way as an ActiveX DLL.
Hope this is helpful.
Glyn.