We don't currently have anything built in that will track cursor position history. I will log a suggestion for that feature. You might be able to do that yourself if you handle the ViewSelectionChanged and DocumentTextChanged events and track caret moves there.
Ctrl+Click will add a caret by default if the SyntaxEditor.AreMultipleSelectionRangesEnabled property is true. If that property is false, Ctrl+Click will select by word. In order to add some other processing for Ctrl+Click, you'd have to add a IEditorViewPointerInputEventSink service to your syntax language. That event sink service allows you to intercept mouse events before our default processing occurs. You'd add code in the event sink's NotifyPointerPressed method to look for Ctrl key down and hit test the location that was clicked. Then if you detect that is over an identifier, look up where that might be declared in your code and move the caret to it.