This program is part of Netpbm(1).
pgmtopgm simply copies a PGM image from Standard Input to Standard Output. This may seem an unnecessary duplication of cat, but remember that a PGM program can read a PBM image as if it were PGM. So pgmtopgm can read either a PBM or PGM image and produce a PGM image as output.
Even that is of limited usefulness because of the fact that almost any program to which you would feed the resulting PGM image could also just take the original image directly. However, sometimes you really need a true PGM image.
When you know you have a PBM image and want a PGM image, pbmtopgm is a more general way to do that conversion.