There are several operators that add primitive objects to a scene, look at the reference for each to see all available options.
An example of adding several objects -
for x in range(10):
bpy.ops.mesh.primitive_cone_add(location=(x,0.0,1.0), radius1=0.5, radius2=0.1)
You can also find similar operators available when using bmesh, which is a better option when you want to edit mesh objects, or build more complex models.
Note that after you add an object using one of the primitive operators, it becomes the active object, that means you can get the object using
bpy.context.active_object and make further adjustments after you have created it.
This answer gives an example of creating multiple materials and assigning them to different faces.