Modeling with Python
For your first step you don't need to use python, create a base and save it, then you can use that file as a starting point for each new object you create.

The simplest way to create a mesh object using python would be to define a list of vertices and faces that make up the mesh.

import bpy

verts = [(-1,  1,   0),
         ( 1,  1,   0),
         ( 2, -3,   0),
         (-2, -1,   0),
         (-1,  1.5, 1),
         ( 1,  1.5, 1),
        ]

# faces are a list of indices to each vertex from the above list
faces = [[0, 1, 2, 3], [0, 1, 5, 4]]

mesh = bpy.data.meshes.new(name="New Mesh")
mesh.from_pydata(verts, [], faces)
obj = bpy.data.objects.new('New object', mesh)
bpy.context.scene.objects.link(obj)


You might want to get familiar with the bmesh module which is used to perform most of the modelling tasks we do on mesh objects. The linked page contains an example of creating and editing a mesh.

As you don't know python very well yet I would suggest first trying out the sverchok addon. It uses nodes to generate mesh objects. The links on sverchoks home page are getting old so you may want to start with this playlist to get an idea of what you can do.