There are two things here, working with data compression and working with C++.
To crack data compression you'll nee to understand the mathematics and algorithms at least reasonably well from a theoretical point of view, in other words on paper. A quick search tells me I might start somewhere like here
Assuming you've nailed data compression theory the next part is C++. You'll need data structures and I/O that match the kind of data you're working with, and in particular the ammount of data you're working with. Compressing a single JPEG image into the smallest possible space using tens of billions of cycles to do fractal compression is a very different ball game from compressing live HD video in real time, i.e 30+ frames per second.
Given that you're not likely to want to do everything from scratch the first time you might look into some exisitng frameworks like ACE for high speed comms or GStreamer or Microsoft Media Foundation for building a video pipeline and then add your compression/decompression as a new plugin or layer.
The rest is going to be down to practised C++ technique and the details of your specification. I wish you luck.