An extension should be thought of as a (small) product with its own requirements. Determining how a Launch user will want to use your extension can help you sort the functionality into what Events, Conditions, Actions, and Data Elements your extension should provide.
With that knowledge you can plan out what components should be provided in your Extension.
With a plan in place, these guides can help you understand the extension development process:
There are also a number of NPM tools to help you with your extension package development:
There are example extensions on Github you can review or use as starter projects:
There is a Slack community workspace where extension authors can support each other. You can request access at http://join.launchdevelopers.chat.
Please note: while there are members of the Launch team in this Slack workspace, it is a community resource not sponsored by or moderated by Adobe.