Welcome to the QGIS Development pages
QGIS has a plugin infrastructure. You can add a lot of new functionality by writing your own plugins.
These plugins can either be written in C++ or in Python
To learn how to write your first cpp plugin, please go here: Developing CPP plugins
Via a script you will generate a plugin stub which can be used further.
QGIS has a lot to offer for python developers too.
QGIS has python bindings so you can automate tasks in QGIS via python.
Looking for examples of python plugins, see http://plugins.qgis.org
You can find the QGIS-iface which you can use via python here:
http://qgis.org/api/classQgisInterface.html (for QGIS testing)
http://qgis.org/api/2.0/classQgisInterface.html (for QGIS 2.0)
http://qgis.org/api/1.8/classQgisInterface.html (for QGIS 1.8)