I guess it depends what you want to consume your DLL from. A .net DLL can be consumed by a .net application without any form of registration, and I would assume this would be the typical use case. It's only if you want to expose your DLL with a COM interface to be used by other languages that you need a COM registration.
LoadLibrary load the DLL, then GetProcAddress to find the function, then call it.
We converted some of these to VB.Net and then had to jump through a bunch of hoops (reg-free COM) to use it in that way.