Precomposition with a function probably provides the most elementary notion of pullback: in simple terms, a function f of a variable y, where y itself is a function of another variable x, may be written as a function of x. This is the pullback of f by the function y.
It is such a fundamental process that it is often passed over without mention.
The notion of pullback as a fiber-product ultimately leads to the very general idea of a categorical pullback, but it has important special cases: inverse image (and pullback) sheaves in algebraic geometry, and pullback bundles in algebraic topology and differential geometry.
The pullback bundle is perhaps the simplest example that bridges the notion of a pullback as precomposition, and the notion of a pullback as a Cartesian square. In that example, the base space of a fiber bundle is pulled back, in the sense of precomposition, above. The fibers then travel along with the points in the base space at which they are anchored: the resulting new pullback bundle looks locally like a Cartesian product of the new base space, and the (unchanged) fiber. The pullback bundle then has two projections: one to the base space, the other to the fiber; the product of the two becomes coherent when treated as a fiber product.
When the pullback is studied as an operator acting on function spaces, it becomes a linear operator, and is known as the composition operator. Its adjoint is the push-forward, or, in the context of functional analysis, the transfer operator.
The relation between the two notions of pullback can perhaps best be illustrated by sections of fiber bundles: if s is a section of a fiber bundle E over N, and f is a map from M to N, then the pullback (precomposition) of s with f is a section of the pullback (fiber-product) bundle f*E over M.