Despite the somewhat messy documentation, graphviz is actually pretty easy to use. I've written several programs that create output in the dot language, mostly in Python or awk, eg
this thread has a simple graph-making program in Python for an extended version of rock-paper-scissors.
As thoughfully mentioned, graphviz takes care of the layout for you. OTOH, it doesn't prevent you from manually positioning any or all of the nodes, if you so desire.
I don't know which part of the graphviz documentation you looked at, but I suggest taking a look at the
dot man page, and have a quick look at the simple examples given near the end of that document. I can post some more examples, if you like.
One nice thing about graphviz is that it has a wide range of output formats available, including several structured drawing formats like PostScript and SVG. I quite like using SVG because it supports tooltips on all graph elements.
If you decide to not use graphviz, I'd still recommend using a structured drawing format for output over some bitmap format. It's not that hard to generate simple PostScript or SVG files directly, and they scale and print well. And if you want to get fancy, modern browsers support SVG animation (although I must admit that I have no experience with creating such things).