Hi,
You can think of Application object as a globally unique template/blueprint/definition that represents an application whereas the Application service principal object is a concrete representation of the application for purposes of consent being given to it, permissions to access resources being granted to it, etc., in a specific tenant. It's a one-to-many relationship in that there is only 1 Application object (which exists in only one tenant), but there can be many Application service principals (one for each tenant).
An application object could exist without any linked application service principals. It's really only when the application needs to be used (given consent, granted access, etc.) in a specific tenant that a corresponding application service principal instance needs to exist in that tenant.
-TP