What are the roles of each of these commands? What is the good command to create a new format ?
initex command is on a modern system identical to
tex -ini: I would favour the latter. This calls TeX in 'initex mode', which is the only way that TeX can be run to create a format as it enables the
\dump primitive. Making a format 'by hand' is a simple case of running
tex -ini <filename>
<filename> should be for a format file. For example, to build a LaTeX2e format
tex -ini latex.ltx
If you want to build a format with the e-TeX extensions enabled, you prepend a
* to the file name (this requires appropriate shell escaping), and of course use a TeX derivative which has them. For example, for the LaTeX3 test material, I occasionally build a 'minimal format' with
pdftex -ini "*l3format.ltx"
tex -fmt requires a format name as an argument, and is used to get TeX to use whatever format you've created. So
would choose the LaTeX2e format (either the one I just created or the standard one installed in the main TeX tree). That will not be identical to running
latex on a modern system, as the latter uses pdfTeX, so more like
fmtutil is a TeX Live tool for managing and building the large number of formats that a full TeX system has. It is used to generate the formats stored in the main TeX tree, which are used by default. For example, separate formats are needed for
xelatex, ..., and you would not want to have to change those all by hand. However, if you are building your own custom format then it's not needed.