Dependency Graph plug-ins allow you to create your own deformers, manipulators, shapes, hardware shaders, software shaders, constraints, and inverse kinematic solvers to name only a small set of plug-in types. In contrast to command plug-ins, which inherit from MPxCommand, dependency graph plug-ins inherit from MPxNode or one of its many subclasses: MPxDeformerNode, MPxSurfaceShape, MPxHwShaderNode, MPxConstraint, etc.
To briefly outline how dependency graph plug-ins work, the idea is to define a node with a set of inputs and outputs. The Maya Script Editor can be used to create instances of this node, and connect its inputs and outputs to other nodes in the dependency graph. The behavior of the node is defined in its compute() method, which takes care of computing an output, given a set of inputs. For more information, consult The Dependency Graph topic.