How can I know the data paths of certain point of bezier curve?
You can try to figure it out yourself in the Python Console, or use the API docs as described here: Blender/Python API Reference Usage: examples of how to use the API reference docs

If you search for bezier in the docs, you will find bpy.types.BezierSplinePoint.co among others. At the bottom of the page, you can find


  References
  
  
  Spline.bezier_points
  


So bezier_points is an attribute of a Spline object, which is in turn an attribute of a Curve object:


  References
  
  
  Curve.splines
  


The access path is therefore Curve.splines[#].bezier_points[#].co.

A Curve is an ID type:


  Curve(ID)
  base classes — bpy_struct, ID


which could be, for instance, bpy.data.curves['BezierCurve']. Or if you want the data block of the current object, you would use bpy.context.object.data:

import bpy

ob = bpy.context.object
assert ob.type == 'CURVE' # throw error if it's not a curve

curve = ob.data
spline = curve.splines.active # let's assume there's only one
assert spline.type == 'BEZIER' # throw error if it's not a bezier

print(len(spline.bezier_points)) # print number of points
print(spline.bezier_points[0].co) # print coordinate of first point
print(spline.bezier_points[0].handle_left) # ... and its left handle's coordinate
print(spline.bezier_points[0].handle_right) # ... as well as the right one