This question is best directed to the galaxy-dev mailing list because it concerns developing around Galaxy, so I've moved it there.

However, if I understand it right, the idea of the XML tool config is to provide a description of the galaxy graphical user interface rather then a general description of the actual tool's interface.

No, the XML config describes a tool in abstract/essence: inputs, parameters, and outputs. Rendering of a tool can be done any number of ways.

- param tag: I havent really understood how you define a parameter to be mandatory or optional. I see when it is the child of the repeat element that there is (maybe) a minimum defined. But when this is not the case, how can I conclude that the parameter is optional vs. mandatory ?

Parameters have an 'optional' attribute. See here for details on tool and parameter config in general:

http://wiki.galaxyproject.org/Admin/Tools/ToolConfigSyntax

- param tag's help attribute: can I assume any format, or is it simply the output of the tools help command ?

Format is simply text.

- when do you update the tools and in turn the XML configs. (e.g. the gatk stuff is kind of outdated: 1.4 vs 2.6 )

The depends on a number of factors, including tool stability, dependencies, usage level, and ease of updating.

The tool shed makes it easy to follow tool updates for a local instance:

http://wiki.galaxyproject.org/Tool%20Shed

You might be able to reuse some of that code in a stand-alone script.

Good luck,
J.