You are on the right track with looking in
arcpy. You simply need to look at the
arcpy.mapping module. The amount of flexibility you have here will depend on what version of ArcGIS you are using. There were some pretty significant additions made at
10.1 that added a lot of functionality. One of these additions were a set of modifiers for different symbology types.
Here is the initial help for arcpy.mapping: ArcGIS Help 10.1 - Introduction to arcpy.mapping
This screenshot of the arcpy.mapping classes shows the different symbology types you are able to access and modify programmatically:
Here is the help for the unique values symbology: ArcGIS Help 10.1 - UniqueValuesSymbology (arcpy.mapping)
Definitely take a look at these help documents and always look down at the end of each one. That is where they have code samples, which are extremely useful!
One important note, and I quote:
Basic operations such as modifying class values and labels, or
changing the field that the symbology is based on are some of the
properties that can be modified. For access to the complete set of
layer symbology properties and settings, for example, changing
individual symbols for individual classes, it is necessary to author
these changes in the ArcMap user interface and then save those changes
to a layer file. These custom settings can then be applied to
existing layers using the UpdateLayer function.
Essentially, know that while you will be able to access an increasing number of properties through here, sometimes you will just have to set something up by hand, save it, then apply that saved layer file to existing layers to get the look that you want.