DotNetNuke has an open architecture based on core code and custom modules. Recent versions have emphasized removing code from the 'core' and relocating it in custom modules.
Most of the functionality in the basic product is delivered via custom modules. The supplied custom modules have no special status as far as interaction with the core is concerned. It really is true that a custom module can be as good as the modules that 'come in the box'. Certainly custom modules have the same ability to access core API's.
Custom modules genuinely are seamless extensions to the core product.
Dynamisys can advise on the appropriateness of creating custom modules for your site and can undertake the development work for you.