How to use GDALGridInverseDistanceToAPower in a python script

Yes, you can call this from a Python script. But you don't directly call the low-level C API.

First, take a look at the GDAL Grid Tutorial for background info. From the Python library, the relevant function is gdal.Grid(destName, srcDS, **kwargs). You can see some examples of how it's used in test_gdal_grid_lib.py (from the test suite). Or a made-up example:

from osgeo import gdal
gdal.UseExceptions()

ds = gdal.Grid('result.tif', 'points.shp', format='GTiff',
               outputBounds=[0.0, 0.0, 100.0, 100.0],
               width=10, height=10, outputType=gdal.GDT_Float32,
               algorithm='invdist:power=2.0:smoothing=1.0',
               zfield='height')

The full set of spatial interpolation options for invdist (Inverse Distance to a Power) are documented here, and are passed as a colon-separated string to the algorithm keyword. And there are other algorithms than invdist available in a similar manner.

You can also construct many of the other gridding options with gdal.GridOptions, which has all of the available keyword arguments, i.e.:

>>> help(gdal.GridOptions)
Help on function GridOptions in module osgeo.gdal:

GridOptions(options=[], format=None, outputType=0, width=0, height=0, creationOptions=None, outputBounds=None, outputSRS=None, noData=None, algorithm=None, layers=None, SQLStatement=None, where=None, spatFilter=None, zfield=None, z_increase=None, z_multiply=None, callback=None, callback_data=None)
    Create a GridOptions() object that can be passed to gdal.Grid()
    Keyword arguments are :
      options --- can be be an array of strings, a string or let empty and filled from other keywords.
      format --- output format ("GTiff", etc...)
      outputType --- output type (gdal.GDT_Byte, etc...)
      width --- width of the output raster in pixel
      height --- height of the output raster in pixel
      creationOptions --- list of creation options
      outputBounds --- assigned output bounds: [ulx, uly, lrx, lry]
      outputSRS --- assigned output SRS
      noData --- nodata value
      algorithm --- e.g "invdist:power=2.0:smoothing=0.0:radius1=0.0:radius2=0.0:angle=0.0:max_points=0:min_points=0:nodata=0.0"
      layers --- list of layers to convert
      SQLStatement --- SQL statement to apply to the source dataset
      where --- WHERE clause to apply to source layer(s)
      spatFilter --- spatial filter as (minX, minY, maxX, maxY) bounding box
      zfield --- Identifies an attribute field on the features to be used to get a Z value from. This value overrides Z value read from feature geometry record.
      z_increase --- Addition to the attribute field on the features to be used to get a Z value from. The addition should be the same unit as Z value. The result value will be Z value + Z increase value. The default value is 0.
      z_multiply - Multiplication ratio for Z field. This can be used for shift from e.g. foot to meters or from  elevation to deep. The result value will be (Z value + Z increase value) * Z multiply value.  The default value is 1.
      callback --- callback method
      callback_data --- user data for callback