The section titled “Diagrams” in the User Guide (p. 16) discusses the relationship between nodes, ports, and links.
Nodes normally contain ports. One port per node is sufficient for most of the simpler node classes. By default there’s no limit on how many links can be connected to a port. Various properties on GoPort control where and how a link will actually be routed at the port.
Links do not normally contain ports. However, if you want to connect a link to another link, you can add a port (or more than one) to a GoLabeledLink, typically as the MidLabel.
Nodes do not normally contain nodes or links, unless they are GoSubGraphBases, such as GoSubGraph or the BoxArea example class of Demo1, in which case they may very well contain a bunch of nodes and links.
The section on “Links” in the User Guide (p. 69) talks about how to create a link programmatically and how to control their appearance and routing. Typically all you need to do is:
GoLink link = new GoLink();
// … other initialization of the link …
link.FromPort = aNode.Port;
link.ToPort = bNode.Port;