Surfaces are actually an extension of NURBS curves but are still a unique object unto themselves. Whereas a curve produces only one-dimensional interpolation, Surfaces have a second extra dimension of interpolation. The first dimension is U, as for curves, and the second dimension is V.
The Python integration into Blender is an evolving subject. Therefore, all we can give you here just a quick overview of the possibilities of Python in Blender.
The new API is closer to the data structure of Blender. It is strongly oriented on what you can visualize in the OopsWindow. There are classes for Scene, Object, Mesh, Curve etc., and functions to connect and create them.
This tutorial is about how to make a 3d logo from a 2d image using curves. The video was originally over the time limit so we had to cut out some bits to make it fit.
This is a tutorial on how to model a Cup or any cylindrical object like Bottles, Vases or Pots. This method is faster and more flexible than the traditional "Spin" method in Blender.