[proofplan]
We prove all three identities from the universal definition of characteristic classes. For each kind of bundle, choose a classifying map for $E$ and express the relevant characteristic class as the pullback of the universal characteristic class. The pullback bundle $f^*E$ is classified by composing the original classifying map with $f$, and functoriality of cohomology pullback then gives the desired identities.
[/proofplan]
[step:Separate bundle pullback from cohomology pullback]
Throughout the proof, $f^*E\to Y$ denotes the pullback vector bundle, while
\begin{align*}
f^*:H^*(X;R)\to H^*(Y;R)
\end{align*}
denotes the induced cohomology homomorphism with coefficients in a commutative ring $R$. The coefficient ring will be $R=\mathbb Z$ in the Chern, Pontryagin, and Euler cases considered below.
[/step]
[step:Pull back the universal Chern class along the composed classifying map]
Let $r:=\operatorname{rank}_{\mathbb C}E$. Let $\gamma_r^{\mathbb C}\to BU(r)$ denote the universal complex rank-$r$ vector bundle, and let
\begin{align*}
g:X\to BU(r)
\end{align*}
be a classifying map for $E$, so that $E$ is isomorphic to $g^*\gamma_r^{\mathbb C}$ as a complex vector bundle over $X$.
Let
\begin{align*}
c_{\mathrm{univ}}\in H^{\mathrm{even}}(BU(r);\mathbb Z)
\end{align*}
denote the total universal Chern class of $\gamma_r^{\mathbb C}$. By the definition of Chern classes through the universal bundle,
\begin{align*}
c(E)=g^*c_{\mathrm{univ}}.
\end{align*}
The pullback complex vector bundle $f^*E\to Y$ is classified by the composed map
\begin{align*}
g\circ f:Y\to BU(r).
\end{align*}
Therefore,
\begin{align*}
c(f^*E)=(g\circ f)^*c_{\mathrm{univ}}.
\end{align*}
By functoriality of cohomology pullback,
\begin{align*}
(g\circ f)^*c_{\mathrm{univ}}=f^*(g^*c_{\mathrm{univ}}).
\end{align*}
Combining these equalities gives
\begin{align*}
c(f^*E)=f^*c(E).
\end{align*}
[guided]
We want to compare two cohomology classes on $Y$: the Chern class of the pulled-back bundle $f^*E$, and the pullback along $f$ of the Chern class of $E$. The universal construction is designed exactly for this comparison.
Let $r:=\operatorname{rank}_{\mathbb C}E$. Let $\gamma_r^{\mathbb C}\to BU(r)$ be the universal complex rank-$r$ bundle. Choose a classifying map
\begin{align*}
g:X\to BU(r)
\end{align*}
for $E$, meaning that $E$ is isomorphic to the bundle pullback $g^*\gamma_r^{\mathbb C}$ over $X$.
Let
\begin{align*}
c_{\mathrm{univ}}\in H^{\mathrm{even}}(BU(r);\mathbb Z)
\end{align*}
be the total Chern class of the universal bundle. By definition of Chern classes through the universal bundle, the Chern class of $E$ is obtained by pulling back this universal class:
\begin{align*}
c(E)=g^*c_{\mathrm{univ}}.
\end{align*}
Now consider the bundle $f^*E\to Y$. Since $E$ is classified by $g$, the pullback bundle $f^*E$ is classified by the composed map
\begin{align*}
g\circ f:Y\to BU(r).
\end{align*}
Indeed, pulling back the universal bundle first along $g$ and then along $f$ gives the same bundle as pulling it back once along $g\circ f$. Hence the universal definition gives
\begin{align*}
c(f^*E)=(g\circ f)^*c_{\mathrm{univ}}.
\end{align*}
The remaining point is purely functorial. Cohomology pullback reverses composition of maps, so for the composed map $g\circ f$ one has
\begin{align*}
(g\circ f)^*=f^*\circ g^*.
\end{align*}
Applying this identity to $c_{\mathrm{univ}}$ yields
\begin{align*}
(g\circ f)^*c_{\mathrm{univ}}=f^*(g^*c_{\mathrm{univ}}).
\end{align*}
Using $c(E)=g^*c_{\mathrm{univ}}$, we conclude
\begin{align*}
c(f^*E)=f^*c(E).
\end{align*}
[/guided]
[/step]
[step:Repeat the universal argument for Pontryagin classes]
Let $n:=\operatorname{rank}_{\mathbb R}E$. Let $\gamma_n^{\mathbb R}\to BO(n)$ denote the universal real rank-$n$ vector bundle, and let
\begin{align*}
h:X\to BO(n)
\end{align*}
be a classifying map for $E$. Let
\begin{align*}
p_{\mathrm{univ}}\in H^{4*}(BO(n);\mathbb Z)
\end{align*}
denote the total universal Pontryagin class. By definition,
\begin{align*}
p(E)=h^*p_{\mathrm{univ}}.
\end{align*}
The pullback real vector bundle $f^*E\to Y$ is classified by
\begin{align*}
h\circ f:Y\to BO(n).
\end{align*}
Therefore, by the universal definition and functoriality of cohomology pullback,
\begin{align*}
p(f^*E)=(h\circ f)^*p_{\mathrm{univ}}.
\end{align*}
Also,
\begin{align*}
(h\circ f)^*p_{\mathrm{univ}}=f^*(h^*p_{\mathrm{univ}}).
\end{align*}
Thus
\begin{align*}
p(f^*E)=f^*p(E).
\end{align*}
[/step]
[step:Use the pulled-back orientation for the Euler class]
Let $n:=\operatorname{rank}_{\mathbb R}E$, and assume now that $E\to X$ is oriented. Let $\gamma_n^{\mathrm{or}}\to BSO(n)$ denote the universal oriented real rank-$n$ vector bundle, and let
\begin{align*}
u:X\to BSO(n)
\end{align*}
be an oriented classifying map for $E$. Let
\begin{align*}
e_{\mathrm{univ}}\in H^n(BSO(n);\mathbb Z)
\end{align*}
denote the universal Euler class. By definition,
\begin{align*}
e(E)=u^*e_{\mathrm{univ}}.
\end{align*}
The bundle $f^*E\to Y$ is equipped with the pulled-back orientation. With this orientation, it is classified as an oriented real vector bundle by
\begin{align*}
u\circ f:Y\to BSO(n).
\end{align*}
Hence
\begin{align*}
e(f^*E)=(u\circ f)^*e_{\mathrm{univ}}.
\end{align*}
By functoriality of cohomology pullback,
\begin{align*}
(u\circ f)^*e_{\mathrm{univ}}=f^*(u^*e_{\mathrm{univ}}).
\end{align*}
Therefore
\begin{align*}
e(f^*E)=f^*e(E).
\end{align*}
This proves the Chern, Pontryagin, and Euler naturality identities.
[/step]