SharePoint offers two types of apps: SharePoint-hosted apps, where all components are deployed to SharePoint, and provider-hosted apps, where a wrapper is deployed to SharePoint but components are hosted externally. SharePoint-hosted apps only use client-side code and are automatically deployed, authenticated, authorized and managed, while provider-hosted apps can use server-side code but require developers to handle authentication, authorization, and deployment across domains.