A simple approach (that fails if you have embedded code comments) is to do something like
And then type : and the displayed line number of the match you want. You could assign the commands to a mapping.
Or, yank the words you want to search and do /^#\+ <C-r>", which could be assigned to an operator for fun: e.g., ghi] would take you to ...
Moving completed tasks
Presuming that a done line looks like this:
- ~A completed task~
Then you can do so with a :global command that performs a :move:
:g/^- \~.*\~$/m/^# Things done/+1
:g # find lines that match
/^- \~.*\~$/ # the regular expression /^- \~.*\~$/