A QGIS plugin can be created manually with a simple editor, but the simplest and most complete way to start to create a plugin is to use another Python plugin called Plugin Builder.
Plugin Builder generates the file infrastructure of the plugin, thus avoiding writing repetitive code. Plugin Builder creates only basic and generic plugins, which can be modified to add specific user functionalities.
It is a graphical interface used to introduce the main parameters to create a plugin. It will generate a generic plugin with the following interface:
This is an almost empty dialog with two buttons. Every piece of this interface can be modified and customized to reach the plugin goal.