Maybe this isn't the "right" way to think about them, but I have often found the following characterization much more appealing: the characteristic classes are just elements of $E^*(BG)$ for some cohomology theory and some group $G$, if $E$ is ordinary cohomology with integer coefficients and $G$ is the infinite unitary group you get Chern classes etc. The universal property of $BG$ gives you a unique map that classifies each $G$-bundle, now look at the map in cohomology that you get from this and you get the characteristic class of the desired bundle. This probably requires some sort of orientability for things to be "nice" but you can certainly define characteristic classes for any cohomology theory this way, they just might not have nice relations.