DLL is a library of functions. DLL can not be run as normal application - because it lacks entry point. It is not a solid program, it is a collection of functions. It requires someone else to call functions.
Application (.exe file) can load DLL (.dll file) and call a function from it. DLL is isolated file, not related to application. Therefore, DLL and application can be written in different programming languages.
Application is often called a "host application" or just "host" . Both DLL and host are also called "executable modules" or just "modules". Sometimes "application" is referred to host with loaded DLLs (not just the host itself).
DLL and application need to understand each other. So, a set of rules must be established to communicate. Such set of rules is called "API".
API is a contract between host and DLL
API can be developed by you or some other developers/company. If you're the API developer - then you can decide how DLL will work with host. If you're not the API developer - then you can only follow already established rules, but you can't invent your own rules.