Breadth-first search fans out in layers, visiting everything one step away before anything two steps away. You keep a queue of vertices to process and a visited set so you never revisit. Start by marking the source visited and putting it in the queue.
Then repeat until the queue empties:
Remove the front vertex
Look at each of its neighbors
For any unvisited neighbor, mark it visited and add it to the back
Because the queue is first-in first-out, closer vertices always come out first. That is what produces the ring-by-ring order. Each vertex enters the queue once and each edge is examined once, so the cost is O(V + E).
This layered order is exactly why BFS finds the fewest-edge path in an unweighted graph. The first time you reach a vertex, you reached it by the shortest number of hops.
Rewriting in plainer words…
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.