For the longest time, our template used legends for general sheet notes. This worked fairly well since legends can be placed on multiple sheets and a single update affects all instances. However, our new approach is one that has greater advantages, especially for larger projects.
We created a generic annotation with three instance parameters: Grouping, Number & Text. Together with some linework, this creates a 'physical' placeholder for sheet notes within the model. Some notes are longer than others, so we've allowed plenty of room within the annotation family to accommodate long bits of text.
Using a NoteBlock, we can now schedule every instance of this family. We'll sort by Grouping & Number. This schedule is the easiest & fastest way to make edits to notes.
We'll now duplicate that same schedule and use filters to narrow it down to a specific category & to hide blank notes. The '99' filter is used to hide a note from the sheet, while keeping it in the project. This way, for whatever reason, it can be added back easily. Any noted filled out in our main schedule will append automatically.
Edit: I created a follow up post here.