Hi @mark,
Nice! 
Unfortunately we don’t yet have developer documentation or custom tools to help with Cockpit development, and my priorities for documentation at the moment are on Cockpit usage rather than development that requires custom builds of the application, as well as various other software projects that are in need of docs updates.
There is some basic development setup information in the repository README, and there’s a Discord channel for development chat, which are likely both quite helpful 
Rafael has already covered a bunch of this, but to add some clicky stuff and additional context:
The best way to start this is using the DIY widget, or by developing a BlueOS Extension to run some backend functionality on the vehicle and provide a widget interface to Cockpit through its automatic external iframes mechanism.
If you make a widget that you then want to contribute / integrate into Cockpit itself then we should be able to provide more directed advice on packaging that together, potentially forming the start of our development docs 
It’s perhaps worth noting that the documentation I am actively working on should go into some depth on Cockpit’s API (how to make custom Actions and the like), as well as making use of its Data Lake system to use and share data around the application, and store it persistently where that’s relevant. I’m hoping to get that reviewed and release it late next week, or early the week after.
Custom map layers and the like have been considered since the start of the project, but haven’t yet been implemented in an accessible way. There’s also been some more directed discussion of the capacities of interaction, including adding landmarks and the like.
While that’s functionality you could potentially help contribute to the project, it’s also quite a fundamental feature of a control station software, so will require a fair amount of thought before a proposed implementation could be accepted. You’re very welcome to contribute your ideas and preferences to the discussion in those Issues (or a new sub-Issue), and/or in chat / forum posts as relevant 
This is another one that doesn’t have a strong implementation basis at this point. I’ve put some high level thoughts around a sustainable overlay system in this Issue, and some thoughts on annotation approaches in this forum thread, which you’re again welcome to contribute to 
As an overview, while editing video pixels can be a visually effective approach, the processing requirements, extra latency, and resulting lost frame data seem suboptimal and unsustainable when compared with just sending the annotation information separately and drawing it over the video dynamically. Having a convenient mechanism for that built into Cockpit would be valuable, and with the right design that information could even be saved in subtitle files that could be played back over the video (like is already done with telemetry data), and turned off when it’s preferable to view/analyse just the video frames 