[proofplan]
The proof has two parts. First, the cover: by definition of $\mathbb{P}^n_k$, every point $[x_0 : \cdots : x_n]$ is the equivalence class of a non-zero tuple $(x_0, \ldots, x_n)$, so at least one coordinate $x_i$ is non-zero, placing the point in the corresponding $U_i = \{[x_0:\cdots:x_n] : x_i \neq 0\}$. Second, the chart: we explicitly construct a bijection $\varphi_i : U_i \to \mathbb{A}^n_k$ by normalising $x_i = 1$ and recording the remaining $n$ coordinates, and a candidate inverse $\psi_i : \mathbb{A}^n_k \to U_i$ by inserting a $1$ in the $i$-th slot. Verifying that $\varphi_i$ is well-defined on equivalence classes (independent of the chosen representative) and that $\varphi_i \circ \psi_i = \mathrm{id}$ and $\psi_i \circ \varphi_i = \mathrm{id}$ completes the argument. The "$\cong$" in the statement is interpreted as bijection of sets — when $U_i$ is given the Zariski topology and $\mathbb{A}^n_k$ its standard one, both maps are continuous, but here we only need the set-theoretic statement.
[/proofplan]
[step:Recall the definition of $\mathbb{P}^n_k$ and the standard charts $U_i$]
Define projective $n$-space over $k$ as
\begin{align*}
\mathbb{P}^n_k := (k^{n+1} \setminus \{0\})/\sim,
\end{align*}
where $(x_0, \ldots, x_n) \sim (y_0, \ldots, y_n)$ iff there exists $\lambda \in k^\times$ with $y_j = \lambda x_j$ for all $j = 0, \ldots, n$. Write $[x_0 : \cdots : x_n]$ for the equivalence class of $(x_0, \ldots, x_n)$ — the homogeneous coordinates.
For each $i \in \{0, 1, \ldots, n\}$, define the standard open chart
\begin{align*}
U_i := \{[x_0 : \cdots : x_n] \in \mathbb{P}^n_k : x_i \neq 0\}.
\end{align*}
This is well-defined on equivalence classes: if $(x_0, \ldots, x_n) \sim (y_0, \ldots, y_n)$ via $y_j = \lambda x_j$ with $\lambda \neq 0$, then $x_i \neq 0 \iff y_i = \lambda x_i \neq 0$. So the condition "$x_i \neq 0$" depends only on the class.
[/step]
[step:Show that $\mathbb{P}^n_k = U_0 \cup U_1 \cup \cdots \cup U_n$]
The inclusion $U_0 \cup \cdots \cup U_n \subset \mathbb{P}^n_k$ is immediate from the definition of each $U_i$.
For the reverse, take any $[x_0 : \cdots : x_n] \in \mathbb{P}^n_k$. By definition, this is the equivalence class of some $(x_0, \ldots, x_n) \in k^{n+1} \setminus \{0\}$. The condition $(x_0, \ldots, x_n) \neq (0, 0, \ldots, 0)$ means at least one component is non-zero: there exists some index $i \in \{0, 1, \ldots, n\}$ with $x_i \neq 0$. By definition of $U_i$, the class $[x_0 : \cdots : x_n]$ lies in $U_i$, hence in $U_0 \cup \cdots \cup U_n$.
Combining the two inclusions,
\begin{align*}
\mathbb{P}^n_k = U_0 \cup U_1 \cup \cdots \cup U_n.
\end{align*}
[/step]
[step:Define the chart map $\varphi_i : U_i \to \mathbb{A}^n_k$]
Fix $i \in \{0, 1, \ldots, n\}$ and define
\begin{align*}
\varphi_i : U_i &\to \mathbb{A}^n_k \\
[x_0 : \cdots : x_n] &\mapsto \left( \frac{x_0}{x_i}, \ldots, \frac{x_{i-1}}{x_i}, \frac{x_{i+1}}{x_i}, \ldots, \frac{x_n}{x_i} \right),
\end{align*}
where the $i$-th slot $x_i/x_i = 1$ is omitted (this is the meaning of the hat notation $\widehat{x_i/x_i}$ in the statement). The denominator $x_i \neq 0$ on $U_i$, so the formula is well-defined on representatives.
\emph{Well-definedness on equivalence classes.} Suppose $(x_0, \ldots, x_n) \sim (y_0, \ldots, y_n)$, i.e. $y_j = \lambda x_j$ for all $j$, some $\lambda \in k^\times$. Then $y_i = \lambda x_i$ and for each $j \neq i$,
\begin{align*}
\frac{y_j}{y_i} = \frac{\lambda x_j}{\lambda x_i} = \frac{x_j}{x_i}.
\end{align*}
Hence the tuple $(y_j/y_i)_{j \neq i}$ equals $(x_j/x_i)_{j \neq i}$, so the value of $\varphi_i$ depends only on the equivalence class. The map is well-defined.
[/step]
[step:Define the candidate inverse $\psi_i : \mathbb{A}^n_k \to U_i$]
Define
\begin{align*}
\psi_i : \mathbb{A}^n_k &\to U_i \\
(y_1, \ldots, y_n) &\mapsto [y_1 : \cdots : y_{i-1} : 1 : y_{i+1} : \cdots : y_n],
\end{align*}
where the $1$ is inserted in the $i$-th slot (between $y_{i-1}$ and $y_{i+1}$ in the listing; the indexing of the components $y_1, \ldots, y_n$ is the natural one for $\mathbb{A}^n_k$, separate from the projective indexing $0, 1, \ldots, n$). Concretely: $\psi_i$ takes a tuple of $n$ coordinates and produces a homogeneous $(n+1)$-tuple by placing those $n$ values in the slots other than $i$ and a $1$ in slot $i$.
\emph{Image lies in $U_i$.} The chosen representative has $i$-th component equal to $1 \neq 0$, so $\psi_i(y_1, \ldots, y_n) \in U_i$. The image is also non-zero in $k^{n+1}$ for the same reason, so it represents a valid point of $\mathbb{P}^n_k$.
[/step]
[step:Verify $\varphi_i \circ \psi_i = \mathrm{id}_{\mathbb{A}^n_k}$]
Take $(y_1, \ldots, y_n) \in \mathbb{A}^n_k$. By definition,
\begin{align*}
\psi_i(y_1, \ldots, y_n) = [y_1 : \cdots : y_{i-1} : 1 : y_{i+1} : \cdots : y_n].
\end{align*}
Apply $\varphi_i$: the $i$-th coordinate of the representative is $1$, so dividing each non-$i$ coordinate by $1$ leaves it unchanged. Hence
\begin{align*}
\varphi_i(\psi_i(y_1, \ldots, y_n)) = \left(\frac{y_1}{1}, \ldots, \frac{y_{i-1}}{1}, \frac{y_{i+1}}{1}, \ldots, \frac{y_n}{1}\right) = (y_1, \ldots, y_n),
\end{align*}
so $\varphi_i \circ \psi_i = \mathrm{id}_{\mathbb{A}^n_k}$.
[/step]
[step:Verify $\psi_i \circ \varphi_i = \mathrm{id}_{U_i}$]
Take $[x_0 : \cdots : x_n] \in U_i$, so $x_i \neq 0$. By definition of $\varphi_i$,
\begin{align*}
\varphi_i([x_0 : \cdots : x_n]) = \left(\frac{x_0}{x_i}, \ldots, \frac{x_{i-1}}{x_i}, \frac{x_{i+1}}{x_i}, \ldots, \frac{x_n}{x_i}\right).
\end{align*}
Apply $\psi_i$, which inserts a $1$ in slot $i$:
\begin{align*}
\psi_i(\varphi_i([x_0 : \cdots : x_n])) = \left[\frac{x_0}{x_i} : \cdots : \frac{x_{i-1}}{x_i} : 1 : \frac{x_{i+1}}{x_i} : \cdots : \frac{x_n}{x_i}\right].
\end{align*}
We compare this with $[x_0 : \cdots : x_n]$. Multiplying the first representative through by the scalar $x_i \in k^\times$ (which is allowed because we are taking the equivalence class, and $x_i \neq 0$):
\begin{align*}
\left[x_i \cdot \frac{x_0}{x_i} : \cdots : x_i \cdot \frac{x_{i-1}}{x_i} : x_i \cdot 1 : x_i \cdot \frac{x_{i+1}}{x_i} : \cdots : x_i \cdot \frac{x_n}{x_i}\right] = [x_0 : \cdots : x_{i-1} : x_i : x_{i+1} : \cdots : x_n].
\end{align*}
The two homogeneous tuples differ by the non-zero scalar $x_i$, so they represent the same point of $\mathbb{P}^n_k$. Hence
\begin{align*}
\psi_i(\varphi_i([x_0 : \cdots : x_n])) = [x_0 : \cdots : x_n],
\end{align*}
i.e. $\psi_i \circ \varphi_i = \mathrm{id}_{U_i}$.
[guided]
We are checking that the map $\psi_i$ — which inserts a $1$ in the $i$-th coordinate slot — undoes the chart map $\varphi_i$ — which divides through by the $i$-th coordinate. Both operations work with homogeneous tuples, but they live on different sides of the equivalence relation, so we need to be careful.
\textbf{Computing the composition on a representative.} Pick $[x_0 : \cdots : x_n] \in U_i$ — by hypothesis, $x_i \neq 0$. Apply $\varphi_i$: rescale the representative by dividing every coordinate by $x_i$, then drop the $i$-th coordinate (which is $1$), to get
\begin{align*}
\left(\frac{x_0}{x_i}, \ldots, \frac{x_{i-1}}{x_i}, \frac{x_{i+1}}{x_i}, \ldots, \frac{x_n}{x_i}\right) \in \mathbb{A}^n_k.
\end{align*}
Now apply $\psi_i$: re-insert a $1$ in the $i$-th slot, yielding the homogeneous class
\begin{align*}
\left[\frac{x_0}{x_i} : \cdots : \frac{x_{i-1}}{x_i} : 1 : \frac{x_{i+1}}{x_i} : \cdots : \frac{x_n}{x_i}\right].
\end{align*}
\textbf{Are we back where we started?} The representative we have now is the original $(x_0, \ldots, x_n)$ scaled by $1/x_i$ — every entry has been divided by $x_i$, including the $i$-th entry which is $x_i/x_i = 1$. By the equivalence relation defining $\mathbb{P}^n_k$, scaling a representative by a non-zero element of $k$ does not change the equivalence class. Specifically, multiplying our representative back by $\lambda = x_i \in k^\times$ yields
\begin{align*}
\left(\frac{x_0}{x_i} \cdot x_i, \ldots, 1 \cdot x_i, \ldots, \frac{x_n}{x_i} \cdot x_i\right) = (x_0, \ldots, x_n),
\end{align*}
which is the original representative. So the homogeneous class is the same:
\begin{align*}
\psi_i(\varphi_i([x_0 : \cdots : x_n])) = [x_0 : \cdots : x_n].
\end{align*}
\textbf{Where does $x_i \neq 0$ get used?} In two places. First, $\varphi_i$ requires dividing by $x_i$, which only makes sense when $x_i \neq 0$ — that is exactly the condition defining $U_i$. Second, the rescaling by $\lambda = x_i$ when comparing equivalence classes requires $\lambda \in k^\times$, again using $x_i \neq 0$.
\textbf{Why this fails outside $U_i$.} If we tried to define $\varphi_i$ at a point with $x_i = 0$, division would be undefined. The point $[1 : 0 : \cdots : 0] \in \mathbb{P}^n_k$ for instance lies in $U_0$ but not in $U_i$ for $i \neq 0$. The collection of charts $U_0, \ldots, U_n$ is necessary precisely because no single one covers all of $\mathbb{P}^n_k$.
[/guided]
[/step]
[step:Conclude]
Steps 5 and 6 show that $\varphi_i$ and $\psi_i$ are mutually inverse maps between $U_i$ and $\mathbb{A}^n_k$, hence each is a bijection. Combined with Step 2 — the cover $\mathbb{P}^n_k = U_0 \cup \cdots \cup U_n$ — this establishes both assertions of the theorem.
In particular, $\mathbb{P}^n_k$ is a union of $n+1$ subsets, each in bijection with $\mathbb{A}^n_k$, with explicit transition formulas given by $\varphi_j \circ \varphi_i^{-1}$ on the overlaps $U_i \cap U_j$ — the "standard affine open cover" of projective space.
[/step]