Is it possible to add an annotation that can be edited by the end user? For example, to allow an end-user (not the developer) add a label to a d3 image and edit text within the label on an adhoc basis? An analogy would be adding a textbox to a Powerpoint slide.
It is possible. It really depends on your application that you already have for how you will do it.
You can add a text field next to whatever THING you want to annotate, and then bind the annotation to the data of that THING. As for storing it, again, depends on your app whether you put it in local storage, send it through to your server, or just let it be there for this session.