Extensions are plug-in programs that run independently and universally across platforms. There are different types of extensions including today, share, action, and photo editing extensions. Extensions have a lifecycle and can communicate between apps and other extensions through defined APIs, but are restricted from using certain system APIs and performing long-running background tasks. Developers must use techniques like app groups and shared containers to share data between extensions and apps.