Video compression is designed for efficient throughput, favoring smaller files to minimize data rate.
video compression always implies a trade-off: it is easier to share and playback smaller files, but it comes at the cost of quality.
Compression is always done by throwing away information, every time you encode video there will be some quality lost in favor of bandwidth.
Most video compression is lossy, whereas png can use lossless compression.
Will you perceive the difference? Probably not, as each image is visible for a very short period of time during video playback .
When the compression is too aggressive, that is when you will start to notice artifacts, like banding or macroblocking, to name a few. The fix those errors is to increase the data rate to the point where you are satisfied with the results.
It is possible to have visually lossless compression, and even lossless compression, resulting in huge files, but it is likely as well that your computer or hard drive cannot sustain the data-rate necessary to play them back smoothly.
The name of the game is Efficiency vs Quality: don't make the files any larger, or any more compressed, than what you can live with.
With that in mind, it makes even more sense to render always as an image sequence first, and encode as video later. Such workflow will allow you to experiment with different settings, and find the optimal size/data-rate/codec/container for your specific needs.
In closing, I would add that PNG is not a good format, Not only is it slower to compress, but it is plagued with a lot of problems, the most serious being it's handling of the alpha channel. If you are serious about creating video content, consider using OpenEXR as your intermediate format. Think of EXR as way to store an identical copy of the render layers you create in blender, without having to re-render.
For additional info read:
What image format encodes the fastest, or at least faster? PNG is too slow