I'm quite new to Blender(and 3D graphics in general) and I can see that there is only 2 kinds of 3d surfaces, meshes and NURBS, meshes only have hard edges, while NURBS have only got curved surfaces, so my question is there any type of surfaces that provides curved surfaces and hard edges?
For visual purposes it is sufficient to approximate the surface with a mesh / wire and use smooth shading afterwards to make the surface appear smooth.
Same mesh using flat shading(top) and smooth shading(below)
To create curved surfaces the common approach in blender is using catmull-clark subdivision.
Catmull-Clark subdivision using crease edges(pink)
Yes, although both are defined by vertices in different locations to your computer. Computers do not know 'curves'.
The closest that anything is would be is the 'Meatball' or 'Meta'. These behave as curves until you want the to become meshes. Shift+A>Meatball will create meatballs.
Notice that two meatballs in proximity to each other will stretch like fluid and adhere to each other, eventually becoming one object.
Alt+C>to mesh from meta will turn your meatball(s) into mesh for vertex editing.