An extension should be thought of as a (small) product with its own requirements. Determining how an Adobe Experience Platform Launch user will want to use your extension can help you sort the functionality into what event types, condition types, action types, and data element types 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 Platform Launch team in this Slack workspace, it is a community resource not sponsored by or moderated by Adobe.