GCD and NSOperationQueue are concurrency APIs for executing tasks asynchronously on iOS and macOS. GCD uses queues and blocks to asynchronously dispatch tasks, while NSOperationQueue uses operations to asynchronously execute tasks. NSOperationQueue builds upon GCD by providing higher-level APIs for canceling, prioritizing and grouping operations. The document provides examples of using dispatch groups with GCD to wait for multiple tasks to finish, and using NSOperationQueue to asynchronously fetch images and create a montage image when all images have been retrieved.