An R-module M is flat if tensoring with M preserves exact sequences -- that is, M ⊗_R - is an exact functor. Flatness is weaker than freeness or projectivity but is the "right" condition for many purposes: flat base change preserves kernels, localizations are always flat, and flat morphisms in algebraic geometry correspond to families with continuously varying fibers. Faithful flatness (flat plus tensoring detects zero) is even more powerful, enabling descent arguments and guaranteeing the going down property for the associated ring map.
Flatness is one of the most important and subtle concepts in commutative algebra. An R-module M is flat if for every injective homomorphism of R-modules A → B, the induced map A ⊗_R M → B ⊗_R M is also injective. Equivalently, the functor M ⊗_R - is exact (it automatically preserves surjections and cokernels; flatness adds preservation of injectivity and kernels). Free modules are flat, projective modules are flat, and localizations S^{-1}R are flat over R. In general, flatness is strictly weaker than projectivity.
Over specific classes of rings, flatness has elegant characterizations. Over a PID, flat is equivalent to torsion-free. Over a local ring (R, m), the local criterion for flatness says M is flat if and only if Tor_1^R(R/m, M) = 0. Over a Noetherian local ring, a finitely generated module is flat if and only if it is free -- this dramatic simplification means flatness is most interesting for infinitely generated modules or for module-like objects (ring extensions). Lazard's theorem provides a general characterization: an R-module is flat if and only if it is a directed colimit of free modules.
The algebraic geometry of flat morphisms is central to modern scheme theory. A morphism of schemes f: X → Y is flat if O_{X,x} is flat over O_{Y,f(x)} for every point x. Flat morphisms are the algebraic analogue of "fiber bundles" or "smooth families" -- the fibers vary continuously (in an algebraic sense). Specifically, flat morphisms satisfy the going down property, preserve dimension of fibers, and interact well with base change. Localization, completion, and extension of scalars are all flat operations, which is why they preserve so many algebraic properties.
Faithful flatness adds a conservativity condition: M is faithfully flat if M is flat and M ⊗_R N = 0 implies N = 0. Equivalently, a sequence of R-modules is exact if and only if it becomes exact after tensoring with M. Faithful flatness enables descent: properties of modules (or algebras) over S can be descended to properties over R when R → S is faithfully flat. The completion of a Noetherian local ring is faithfully flat over the original ring, which is why the Cohen structure theorem for complete local rings has consequences for non-complete rings. Faithfully flat descent is one of the key technical tools in Grothendieck's approach to algebraic geometry.