Stream processing is designed for continuously processing unbounded data streams. It allows for unbounded data inputs and continuous processing, unlike batch processing which requires bounded, finite data sets. The key challenges of stream processing include out-of-order data arrival and needing to relate events that occur close together in time but may be processed out of order. To address this, stream processing systems use watermarks to indicate processing progress, triggers to determine output timing, and accumulation to handle refinements from late data.