Indeed: "dnl" is used to indicate to the m4 parser that the rest of that line (up to the newline) is meant as a comment and therefore that text will not appear in the output (which in this case would be your sendmail.cf file)
The use of "dnl" at the end of a line is typically in combination with a macro definition. Here, the "dnl" right after the macro definition causes the m4 parser not to add an additional newline character to the output (i.e. an unwanted empty line).
So, in your example:
dnl DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
The "dnl" at the beginning is meant for you, the admin. If you remove that "dnl" the rest of the line:
will be parsed by m4 to produce the correct output (without that unwanted extra newline).
So, the "dnl" at the end has no relation to the "dnl" at the beginning. It is not even really needed, but it will produce less empty lines in the output.