Learning all the file formats is quite a task… ;) Just like @feuerstein**, I just look up what I need when I need it.
It is very useful to learn to read such specification. It could be helpful have some actual files for reference and perhaps even making your own parser for them. PNG is actually a very nice and easy format for this, I’d say. Not all formats are that nice.
These specification typically have to be very precise, or the format is not well-defined. So there are a lot of details, which might be overwhelming. But if you just try to find some entry point (for example the general file format or a header) and look up things as you need them, it’s not really that hard after you get used to it. For most purposes you don’t need to understand all details, so you typically you just need to know that there are some bits here and there so you can read them and then ignore them.
If you have any specific questions, you can always ask them.
As for the CRC of the PNG image, there is none stored. PNGs consist of chunks, each of which does have a CRC, but there is no overall one.