The GDAL new generation wrappers are generated from SWIG interface files. The files reside in swig/include (common part) and its subfolders (language specific parts).
The SWIG interface is built on top of the GDAL C API, but it essentially recreates an object-oriented interface.
The fundamental task of wrappers is to take data from variables of one language and store it into variables of another and vice versa. The main tool in SWIG for this is a typemap. SWIG provides some typemaps for simple and basic cases, but in the case of more complex structures and cases the developers need to write custom typemaps. The signatures of the custom typemaps in GDAL wrappers are given in swig/include/README.typemaps. All language bindings need to implement these custom typemaps.
Issues to cover here: reference counting, supported versions of SWIG, adding new wrapped functions, documenting the wrappers (perhaps too language specific), ...