I gave a talk at WordCamp Minneapolis 2015 about building functionality plugins. We talked about the difference between themes and plugins, and what should go in each. I covered getting setup for writing a plugin, best practices for WordPress development, and gave some real world examples of plugin functionality.
You can check out my slides, or the code the example child theme and example functionality plugin on GitHub.
Update: Here is a video of my talk from WordCamp Minneapolis 2015: