Problems with assigning dimensions through python script
The core of this question is 

import bpy

bpy.ops.mesh.primitive_circle_add(vertices=5, radius=1, location=(0, 0, 0))

# this doesn't produce expected results
bpy.context.object.dimensions[0] = 0.7
bpy.context.object.dimensions[1] = 0.7


versus

import bpy

bpy.ops.mesh.primitive_circle_add(vertices=5, radius=1, location=(0, 0, 0))
# this does
dims = bpy.context.object.dimensions
bpy.context.object.dimensions = 0.7, 0.7, dims[2]




Plugged into your sample code:

import bpy

bpy.ops.mesh.primitive_circle_add(vertices=5, radius=1, location=(0, 0, 0))
obj = bpy.context.object  # might need it later

bpy.ops.object.mode_set(mode = 'EDIT')
bpy.ops.mesh.select_mode(type="VERT")
bpy.ops.mesh.extrude_region_move(MESH_OT_extrude_region={"mirror":False},     
TRANSFORM_OT_translate={"value":(0, 0, 30)})
bpy.ops.object.mode_set(mode = 'OBJECT')

current_x, current_y, current_z =  obj.dimensions
obj.dimensions = [0.7, 0.7, current_z]




Why?

There is a bug report about it here https://developer.blender.org/T31760

it's a known error/limitation, and down to the property being intended to be used on the UI only.

For now either use obj.scale (with some extra manual calculation) or set the obj.dimensions all three at once (as shown).