Script to add a number of Objects, Cameras to a scene but cannot rename data objects?
After running a primitive_add operator the context object will be the newly created object.  

import bpy
from math import pi
context = bpy.context

bpy.ops.mesh.primitive_circle_add(radius=6,
                                  fill_type='TRIFAN',
                                  location=[0, 0, 0])
plane = context.object
bpy.ops.mesh.primitive_cube_add(radius=1,
                                location=[0, 0, 5])
cube = context.object
bpy.ops.object.camera_add(view_align=False,
                          location=[0, 10, 20],
                          rotation=[0.436, 0, pi])
camera = context.object
plane.name = 'Plane1'
cube.name = 'Object1'
camera.name = 'Object2'


If you want to rename the data part of above objects

plane.data.name = "blah" #  rename plane mesh
camera.data.name = "blah" 


Using indexes from the collections is IMO not the way to go.  Running

[o.name for o in bpy.data.objects]


in the py console, indicates the objects in this collection are internally sorted by name.  A "better" approach may be

[o.name for o in bpy.context.scene.objects]


but still wouldn't recommend this approach.