[proofplan]
We prove feasibility and approximation separately. Maximality of the matching implies that every edge of $G$ touches an endpoint of an edge in $M$, which is exactly the assertion that $C$ is a vertex cover. Then we use the matching as a lower bound certificate: every vertex cover must choose at least one vertex from each edge of $M$, and the matching edges are pairwise disjoint. Hence $\operatorname{OPT} \ge |M|$, while $C$ contains exactly two endpoints for each matching edge, so $|C| = 2|M| \le 2\operatorname{OPT}$.
[/proofplan]
[step:Use maximality to prove that the matched endpoints cover every edge]
Let $e \in E$ be arbitrary. We claim that $e \cap C \neq \varnothing$.
Suppose, toward a contradiction, that $e \cap C = \varnothing$. By the definition of $C$, no endpoint of $e$ is an endpoint of any edge in $M$. Therefore $e$ is disjoint from every edge in $M$. Since $M$ is a matching, the set $M \cup \{e\}$ is again a matching. Also $e \notin M$, because every edge in $M$ has both endpoints in $C$, while $e$ has no endpoint in $C$. Thus $M \cup \{e\}$ is a matching strictly containing $M$, contradicting the maximality of $M$.
Therefore $e \cap C \neq \varnothing$ for every $e \in E$, so $C$ is a vertex cover of $G$.
[guided]
We must show that $C$ meets every edge of the graph. Let $e \in E$ be an arbitrary edge. The goal is to prove
\begin{align*}
e \cap C \neq \varnothing.
\end{align*}
Assume for contradiction that
\begin{align*}
e \cap C = \varnothing.
\end{align*}
This means that neither endpoint of $e$ is an endpoint of any edge in the matching $M$, because $C$ was defined to be precisely the set of all endpoints of all edges in $M$. Hence $e$ shares no vertex with any edge of $M$.
Since the edges in $M$ are already pairwise vertex-disjoint, and since $e$ is vertex-disjoint from every edge in $M$, the enlarged set
\begin{align*}
M \cup \{e\}
\end{align*}
is also a matching. Moreover $e \notin M$: if $e$ belonged to $M$, then both endpoints of $e$ would belong to $C$, contradicting $e \cap C = \varnothing$. Therefore $M \cup \{e\}$ strictly contains $M$.
This contradicts the assumption that $M$ is maximal, because maximality means that no edge of $E \setminus M$ can be added to $M$ while preserving the matching property. The contradiction proves that every edge $e \in E$ satisfies $e \cap C \neq \varnothing$. Thus $C$ is a vertex cover of $G$.
[/guided]
[/step]
[step:Use the matching to lower bound every vertex cover]
Let $S \subseteq V$ be any vertex cover of $G$. For each edge $m \in M$, the set $S$ must contain at least one endpoint of $m$, because $m \in E$ and $S$ covers every edge in $E$.
The edges in $M$ are pairwise vertex-disjoint, since $M$ is a matching. Therefore the choices forced by distinct edges of $M$ require distinct vertices of $S$. Hence
\begin{align*}
|S| \ge |M|.
\end{align*}
Since this holds for every vertex cover $S \subseteq V$, it holds in particular for a vertex cover of minimum cardinality, and therefore
\begin{align*}
\operatorname{OPT} \ge |M|.
\end{align*}
[/step]
[step:Count the endpoints of the matching and conclude the approximation bound]
Each edge in $M$ has exactly two endpoints, and distinct edges in $M$ have no common endpoint. Since $C$ is the set of all endpoints of edges in $M$, these endpoints are counted without overlap. Therefore
\begin{align*}
|C| = 2|M|.
\end{align*}
Combining this identity with the lower bound $\operatorname{OPT} \ge |M|$ gives
\begin{align*}
|C| = 2|M| \le 2\operatorname{OPT}.
\end{align*}
Together with the first step, this proves that $C$ is a vertex cover and that its cardinality is at most twice the minimum possible vertex-cover cardinality.
[/step]