[proofplan]
For an [open set](/page/Open%20Set) $U$, the set $I_U$ is a closed two-sided ideal because pointwise multiplication preserves vanishing on $X\setminus U$ and uniform limits preserve pointwise vanishing there. Conversely, a closed ideal $I$ determines an open set $U_I$ consisting of the points at which some element of $I$ is nonzero. The main point is to prove $I_{U_I}\subset I$: first approximate an arbitrary element of $I_{U_I}$ by one with compact support inside $U_I$, then cover that compact support by finitely many regions where an element of $I$ is bounded away from zero, and use locally compact Hausdorff cutoff functions to divide locally. This proves that the two constructions are inverse to each other.
[/proofplan]
[step:Show that each open set defines a norm-closed two-sided ideal]
Let $U\subset X$ be open. The set $I_U$ is a complex linear subspace of $C_0(X)$ because the condition of vanishing on $X\setminus U$ is preserved by pointwise addition and scalar multiplication.
Let $f\in I_U$ and let $g\in C_0(X)$. For every $x\in X\setminus U$ one has $f(x)=0$, and hence
\begin{align*}
(fg)(x)=f(x)g(x)=0.
\end{align*}
Since multiplication in $C_0(X)$ is pointwise and commutative, this also gives $gf\in I_U$. Thus $I_U$ is a two-sided ideal.
It remains to check norm closedness. Let $(f_n)_{n\in\mathbb N}$ be a sequence in $I_U$ converging in $\|\cdot\|_\infty$ to a function $f\in C_0(X)$. Fix $x\in X\setminus U$. Since $f_n(x)=0$ for every $n\in\mathbb N$, evaluation at $x$ gives
\begin{align*}
|f(x)|=|f(x)-f_n(x)|\leq \|f-f_n\|_\infty.
\end{align*}
Taking the limit as $n\to\infty$ gives $f(x)=0$. Therefore $f\in I_U$, so $I_U$ is norm closed.
[/step]
[step:Associate an open set to a closed ideal]
Let $I\trianglelefteq C_0(X)$ be a norm-closed two-sided ideal. Define
\begin{align*}
U_I:=\{x\in X: \text{there exists } f\in I \text{ such that } f(x)\neq 0\}.
\end{align*}
We prove that $U_I$ is open. Let $x\in U_I$. Choose $f\in I$ such that $f(x)\neq 0$. Since $f:X\to\mathbb C$ is continuous and $\mathbb C\setminus\{0\}$ is open, the set
\begin{align*}
f^{-1}(\mathbb C\setminus\{0\})
\end{align*}
is an open neighbourhood of $x$ contained in $U_I$. Hence every point of $U_I$ has an open neighbourhood contained in $U_I$, so $U_I$ is open.
For every $f\in I$ and every $x\in X\setminus U_I$, the definition of $U_I$ implies $f(x)=0$. Therefore
\begin{align*}
I\subset I_{U_I}.
\end{align*}
[/step]
[step:Approximate functions in $I_{U_I}$ by compactly supported functions inside $U_I$]
Let $f\in I_{U_I}$ and let $\varepsilon>0$. We shall construct a function $g\in C_0(X)$ such that $\operatorname{supp} g$ is compact and contained in $U_I$, and
\begin{align*}
\|f-g\|_\infty<\varepsilon.
\end{align*}
Since $f$ vanishes at infinity, the set
\begin{align*}
K_\varepsilon:=\{x\in X: |f(x)|\geq \varepsilon\}
\end{align*}
is compact. Since $f(x)=0$ for every $x\in X\setminus U_I$, one has $K_\varepsilon\subset U_I$.
We use the locally compact Hausdorff cutoff lemma: if $K\subset X$ is compact and $V\subset X$ is open with $K\subset V$, then there exists a function $\theta\in C_c(X)$, with $\theta:X\to[0,1]$, such that $\theta=1$ on $K$ and $\operatorname{supp}\theta\subset V$. Applying this lemma to $K_\varepsilon\subset U_I$, choose such a function $\theta:X\to[0,1]$ in $C_c(X)$ satisfying $\theta|_{K_\varepsilon}=1$ and $\operatorname{supp}\theta\subset U_I$. Define $g:X\to\mathbb C$ by $g(x)=\theta(x)f(x)$.
Then $g\in C_c(X)$ and $\operatorname{supp}g\subset\operatorname{supp}\theta\subset U_I$. If $x\in K_\varepsilon$, then $g(x)=f(x)$. If $x\notin K_\varepsilon$, then $|f(x)|<\varepsilon$ and $|\theta(x)|\leq 1$, so
\begin{align*}
|f(x)-g(x)|=|1-\theta(x)|\,|f(x)|\leq |f(x)|<\varepsilon.
\end{align*}
Thus $\|f-g\|_\infty<\varepsilon$.
[guided]
The issue is that a function in $I_{U_I}$ need not have compact support, even though it is zero outside $U_I$. We therefore use the vanishing-at-infinity condition to cut off the part where $f$ is large.
Fix $\varepsilon>0$. Since $f\in C_0(X)$, the set
\begin{align*}
K_\varepsilon:=\{x\in X: |f(x)|\geq \varepsilon\}
\end{align*}
is compact. This compact set lies inside $U_I$: indeed, if $x\in X\setminus U_I$, then $f(x)=0$ because $f\in I_{U_I}$, so such an $x$ cannot satisfy $|f(x)|\geq\varepsilon$.
Now we use local compactness and the Hausdorff property in their standard cutoff form. Since $K_\varepsilon$ is compact and $U_I$ is an open neighbourhood of $K_\varepsilon$, there exists a compactly supported [continuous function](/page/Continuous%20Function)
\begin{align*}
\theta:X\to[0,1]
\end{align*}
such that $\theta=1$ on $K_\varepsilon$ and $\operatorname{supp}\theta\subset U_I$. Define the function $g:X\to\mathbb C$ by
\begin{align*}
g(x)=\theta(x)f(x).
\end{align*}
Because $\theta$ has compact support and $f$ is continuous, $g$ is continuous with compact support, so $g\in C_c(X)\subset C_0(X)$. Moreover $\operatorname{supp}g\subset\operatorname{supp}\theta\subset U_I$.
We estimate the uniform error. On $K_\varepsilon$, the equality $\theta=1$ gives $g=f$. On $X\setminus K_\varepsilon$, the definition of $K_\varepsilon$ gives $|f(x)|<\varepsilon$, and $0\leq\theta(x)\leq 1$ gives
\begin{align*}
|f(x)-g(x)|=|f(x)-\theta(x)f(x)|=|1-\theta(x)|\,|f(x)|\leq |f(x)|<\varepsilon.
\end{align*}
Taking the supremum over $x\in X$ yields
\begin{align*}
\|f-g\|_\infty<\varepsilon.
\end{align*}
Thus every element of $I_{U_I}$ can be uniformly approximated by functions whose support is compact and contained in $U_I$.
[/guided]
[/step]
[step:Prove that compactly supported functions inside $U_I$ belong to $I$]
Let $g\in C_c(X)$ satisfy $\operatorname{supp}g\subset U_I$. Define
\begin{align*}
K:=\operatorname{supp}g.
\end{align*}
Then $K$ is compact and $K\subset U_I$.
For each $x\in K$, choose $h_x\in I$ such that $h_x(x)\neq 0$. By continuity of $h_x$, there is an open neighbourhood $V_x\subset U_I$ of $x$ such that $h_x(y)\neq 0$ for every $y\in V_x$. The family $(V_x)_{x\in K}$ is an [open cover](/page/Open%20Cover) of $K$. By compactness, choose points $x_1,\dots,x_m\in K$ such that
\begin{align*}
K\subset V_{x_1}\cup\cdots\cup V_{x_m}.
\end{align*}
For each $j\in\{1,\dots,m\}$, write $h_j:=h_{x_j}$ and $V_j:=V_{x_j}$.
Using the locally compact Hausdorff shrinking and cutoff lemma for the finite cover of the compact set $K$, choose functions $\psi_j:X\to[0,1]$ in $C_c(X)$ with $\operatorname{supp}\psi_j\subset V_j$ for $j\in\{1,\dots,m\}$ such that $\sum_{j=1}^{m}\psi_j(x)=1$ for every $x\in K$.
For each $j\in\{1,\dots,m\}$, define a function $q_j:X\to\mathbb C$ by setting $q_j(y)=\psi_j(y)g(y)/h_j(y)$ for $y\in V_j$ and $q_j(y)=0$ for $y\in X\setminus \operatorname{supp}\psi_j$. This definition is consistent because $\operatorname{supp}\psi_j\subset V_j$ and $h_j$ has no zeros on $V_j$. More precisely, on the open set $V_j$ the quotient $\psi_j g/h_j$ is continuous, and it vanishes on a neighbourhood of $X\setminus V_j$ because $\operatorname{supp}\psi_j\subset V_j$. Hence the extension by $0$ is continuous on $X$. Its support is contained in the compact set $\operatorname{supp}\psi_j$, so $q_j\in C_c(X)\subset C_0(X)$.
Since $h_j\in I$, $q_j\in C_0(X)$, and $I$ is an ideal, we have $q_jh_j\in I$ for every $j$. Therefore the finite sum
\begin{align*}
s:=\sum_{j=1}^{m}q_jh_j
\end{align*}
belongs to $I$.
For every $y\in K$, the defining relation for the functions $\psi_j$ gives
\begin{align*}
s(y)=\sum_{j=1}^{m}\psi_j(y)g(y)=g(y).
\end{align*}
For every $y\in X\setminus K$, one has $g(y)=0$. Also, if $\psi_j(y)\neq 0$, then $y\in \operatorname{supp}\psi_j$, so $q_j(y)h_j(y)=\psi_j(y)g(y)=0$. Hence $s(y)=0=g(y)$ for $y\in X\setminus K$. Thus $s=g$ on all of $X$, and therefore $g\in I$.
[/step]
[step:Use closedness to obtain the reverse inclusion]
We prove $I_{U_I}\subset I$. Let $f\in I_{U_I}$. For every $\varepsilon>0$, the compact-support approximation step gives a function $g_\varepsilon\in C_c(X)$ such that
\begin{align*}
\operatorname{supp}g_\varepsilon\subset U_I
\end{align*}
and
\begin{align*}
\|f-g_\varepsilon\|_\infty<\varepsilon.
\end{align*}
By the compact-support step, $g_\varepsilon\in I$ for every $\varepsilon>0$.
Choose, for each $n\in\mathbb N$, a function $g_n\in I$ such that
\begin{align*}
\|f-g_n\|_\infty<\frac{1}{n}.
\end{align*}
Then $g_n\to f$ in the norm of $C_0(X)$. Since $I$ is norm closed, $f\in I$. Hence
\begin{align*}
I_{U_I}\subset I.
\end{align*}
Together with the earlier inclusion $I\subset I_{U_I}$, this gives
\begin{align*}
I=I_{U_I}.
\end{align*}
[/step]
[step:Verify that the two assignments are inverse bijections]
It remains to verify the inverse relation on open subsets. Let $U\subset X$ be open. We show that
\begin{align*}
U_{I_U}=U.
\end{align*}
First let $x\in U_{I_U}$. Then there exists $f\in I_U$ such that $f(x)\neq 0$. If $x\in X\setminus U$, the definition of $I_U$ would give $f(x)=0$, a contradiction. Hence $x\in U$, so $U_{I_U}\subset U$.
Conversely, let $x\in U$. Applying the locally compact Hausdorff cutoff lemma to the compact set $\{x\}$ and the open set $U$, choose a function
\begin{align*}
\theta:X\to[0,1]
\end{align*}
such that $\theta\in C_c(X)$, $\theta(x)=1$, and $\operatorname{supp}\theta\subset U$. Then $\theta\in I_U$ and $\theta(x)\neq 0$, so $x\in U_{I_U}$. Therefore $U\subset U_{I_U}$.
Thus $U_{I_U}=U$ for every open $U\subset X$, and the previous step proves $I_{U_I}=I$ for every norm-closed two-sided ideal $I\trianglelefteq C_0(X)$. Hence the assignment $U\mapsto I_U$ is a bijection from open subsets of $X$ onto norm-closed two-sided ideals of $C_0(X)$.
[/step]