For images and tooltips, as a .NET developer you should already know how to do those in XAML.
For link labels and printing, please read the GoXam Introduction PDF document.
For “zooming” along only one axis, please read Controlling element sizes when zooming - #3 by IainS
For your first requirement, I suggest that you change the implementation of those Y axis labels to be Groups rather than regular Nodes. Then if you assign all of those nodes (1, 2, 3, …) to be members of the desired groups, by setting GraphModelNodeData.SubGraphKey, when the user drags the group, all of its member nodes will move too. You will probably want to define a DataTemplate that does not use a GroupPanel. Read the GoXamIntro.pdf file for more information.
To permit users from manipulating the diagram, you’ll want to turn off Diagram.IsReadOnly. You may want to set other properties to control what users may do. Read the GoXamIntro.pdf file for more information about permissions.
To prevent them from moving Groups sideways, but only up and down, set go.Node.MinLocation
and go.Node.MaxLocation
to Point values that have NaN
as the X value.