Curl takes a vector field as an input and gives another vector field as an output. Curl is a measure of rotation where the which points away from the vortex according to the righthand rule. So divergence tells us how much is going in or out of our infinitesimally small volume, curl tells how much things are going around the volume.
If the vector field represents velocity, then curl of this will be 2 times the angular velocity. This page shows this for a rotating solid object.
We have to be a bit careful about what we mean by rotation here, it is not just circular movement that will produce a nonzero curl value, imagine we have a fluid flowing through a pipe in such a way that it is flowing faster in the centre of the pipe than outside, this will also produce a nonzero curl value. To visualise this imagine an infinitesimally small paddle wheel in the fluid, if this would be rotated then curl is nonzero.
Another way to look at it is, curl tells you how much the rate of change of a function in one direction changes as you move in a different direction.
Curl is defined, in the 3D case (there are relatives to curl for more or less dimensions), as follows:
curl()=× = 

Where:
 v_{x} = a scalar representing the component of v in the x direction.
 v_{y} = a scalar representing the component of v in the y direction.
 v_{z} = a scalar representing the component of v in the z direction.
× is an alternative way to denote curl(v), where:
 = is the vector operator as described here
 × = is the cross product as described here
 v = is the vector being operated on
Or in alternative notation:
curl(v) = i(  ∂v_{z}    ∂v_{y}  )+ k(  ∂v_{x}    ∂v_{z}  )+ j (  ∂v_{y}    ∂v_{x}  ) 
∂y  ∂z  ∂z  ∂x  ∂x  ∂y 
Another way to write this is as a determinant as follows:
curl(v)=×v = 

Identities
curl(s v) = s curl(v) + (curl(s)) × v
curl(v_{1}× v_{2}) = (v_{2} •) v_{1}  (v_{1} •) v_{2} + v_{1} div v_{2} + v_{2} div v_{1}
curl(grad s) = 0
stokes's theorem