An application service principal is a local representation, or app instance, of a global app object in a single tenant or directory. This service principal is a concrete instance created from the app object that inherits certain properties from the object. The principal is created in each tenant where the app is used, and references the globally unique object. The service principal object defines what the app can do in the specific tenant, who can access the app, and what resources the app can access.
While an app object is the global representation of your app for use across all tenants, the application service principal is the local representation that's used in a _specific_ tenant. The app object serves as the template from which common and default properties are derived for use in creating corresponding service principal objects.