This tutorial is a good starting point from developing Slicer extensions from scratch in Python: https://www.slicer.org/wiki/Documentation/Nightly/Training#PerkLab.27s_Slicer_bootcamp_training_materials
See this post for information about how to learn underlying libraries.