How to delete bezier points from curve splines with low-level code
Surely there's an easier way to do this.

Had a fiddle with this and came up with code below,  which I'm not sure wins on either count of speed nor cleanliness.  Adds a new spline with the same coordinates, and handles as bezier points of spline zero in original, with one point popped off.  Even with all that code didn't copy handle type for left and right.  

import bpy

context = bpy.context
obj = context.object
curve = obj.data
s0 = curve.splines[0]
index = 0 # index of bez point to remove.
points = len(s0.bezier_points)
x = [0] * points * 3 # flat list of vectors
hr = x[:]
hl = x[:]
s0.bezier_points.foreach_get("co", x)
s0.bezier_points.foreach_get("handle_left", hl)
s0.bezier_points.foreach_get("handle_right", hr)
# pop off index 0
for i in range(3):
    j = 3 * index + i
    x.pop(j)
    hl.pop(j)
    hr.pop(j)

# one less for removed, one more less for splines new
points -= 2 

# add a new spline
spline = curve.splines.new('BEZIER')

spline.bezier_points.add(points)
spline.bezier_points.foreach_set("co", x)
spline.bezier_points.foreach_set("handle_left", hl)
spline.bezier_points.foreach_set("handle_right", hr)

#remove spline 0
curve.splines.remove(s0)