A Pod's phase starts at Pending, moves to Running on a node, and ends at Succeeded or Failed. The status.phase field shows the current one:
Pending means the cluster accepted the Pod, but one or more containers are not yet created and ready to run. It includes scheduling and image pulls.
Running means the Pod is bound to a node, all containers exist, and at least one is running or restarting.
Succeeded means every container exited successfully and none will restart.
Failed means every container has terminated and at least one failed.
Unknown means the Pod's state cannot be read, usually because the node is unreachable.
Init containers run during Pending, and container states such as Waiting and Terminated hold more detail. A failed liveness probe restarts the container under the Pod's restartPolicy, and a failed readiness probe removes the Pod from Service endpoints.
Deleting a Pod starts graceful termination. The kubelet sends SIGTERM to each container and waits up to the grace period, 30 seconds by default. Processes still running after that get SIGKILL.
Rewriting in plainer words…
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.