I prefer this approach which I believe is due to Grothendieck. (I haven't checked how this compares with the sources cited by Nick Kuhn.)
Let $(\mathbb{K},R,d)$ be $(\mathbb{R},\mathbb{Z}/2,1)$ or $(\mathbb{C},\mathbb{Z},2)$. Let $V$ be a $\mathbb{K}$-linear vector bundle over $X$. Over the associated projective bundle $PV$ we have a $\mathbb{K}$-linear tautological line bundle $T$ classified by a map $PV\to \mathbb{K}P^\infty$. I'll assume that we know that $H^*(\mathbb{K}P^\infty;R)=R[x]$ with $|X|=d$$|x|=d$. Pulling back $x$ gives a class $x\in H^d(PV;R)$. Induction over the cells of $X$ shows that $H^*(PV;R)$ is a free module over $H^*(X;R)$ with basis $\{x^i\mid 0\leq i<\dim(V)\}$. Thus, there is a unique monic polynomial $f_V(t)\in H^*(X;R)[t]$ of degree $\dim(V)$ such that $H^*(PV;R)=H^*(X;R)[x]/f_V(x)$. The characteristic classes of $V$ are just the coefficients of $f_V(t)$ (possibly with an extra $\pm$-sign, according to conventions). The cofibre of the inclusion $PV\to P(V\oplus W)$ is the Thom space of a $\mathbb{K}$-linear vector bundle over $PW$, and it follows that $f_V(x)f_W(x)$ annihilates $H^*(P(V\oplus W);R)$, and thus that $f_{V\oplus W}(t)$ must be equal to $f_V(t)f_W(t)$. By comparing coefficients we get the standard formula for characteristic classes of $V\oplus W$.