You have now seen three BFS variants: single-source, multi-source, and level-by-level.
Single-source BFS starts from one node and finds shortest paths to all reachable nodes. Use it for shortest path in unweighted graphs, maze solving, and finding connected components.
Multi-source BFS starts from multiple nodes simultaneously. Use it when you need the shortest distance to the nearest source from a set of sources. Examples include rotting oranges, fire spread, and distance to nearest zero.
Level-by-level BFS processes all nodes at the same distance before moving to the next distance. Use it when you need to count levels (like tree depth) or when you need to process nodes in waves.
The implementation is almost identical for all three. The only difference is how you initialize the queue.