Two different questions live under plugins: which ones are worth installing, and how to build your own.
Building one is mostly about the module. A plugin is a folder with a .uplugin descriptor and one or more modules inside it, and the loading phase decides when your code becomes available, which is the part that catches people out when they try to touch the engine too early. Once you have your own module, editor customizations like component visualizers and custom class icons are a natural thing to put in it.
Epic's reference for the descriptor and the module rules is Plugins in Unreal Engine.