You don't need to decompress it, it should be a png file useable as is, unless you are doing something wrong. The image is not changed, only the binary representation in disk.
There is no way to go to the original file, you could recompress it but you would need to know the library used to create it as well as the compression level and other settings used to create it (filters, deflate strategy, sliding window size,... most png files are created with default values but not all). Usually there is no need, but if you need to keep the original file (e.g. to match a md5 checksum) you shouldn't use zopfli.
Edit: there are two common definitions of lossless compression:
- Being able to recreate a bit-to-bit exact copy of the input file.
- Being able to recover the input file contents without changes. Bit exact reproduction of the input file is not a goal.
General file compression uses the first definition. If you zip a .jpg file you can get back exactly the same .jpg file.
Domain specific lossless compression typically uses the second definition, if you create a PNG file from a JPEG you won't be able to recover the original JPEG file (even if you know that the original was a JPEG image), but the original JPEG and the PNG will have exactly the same image data, yet everybody calls PNG lossless.
If you consider a program that uses Zopfli to reduce PNG files size as a "PNG file compressor", it won't be lossless using the general definition, but it will be using the domain specific one. If the program claims to compress losslessly the image rather than the file there is no ambiguity, it's the second definition. If the program claims to be a lossless optimizer it's also the second definition, there is no ambiguity.