I've faced the same problem may times.
You might use the OleLoadPicture function (this is actually a COM interface form a component from IE, it can load many file types like JPG and PNG), examples can be found on pellesc web page &
www.johnfindlay.plus.com.
The problem with this COM is that the target machine has to have IE > 4.0, and I don't really think I supports 8bit transparency.
Another way is to use CGI+ (IMHO pure rubbish, stands in the middle of GDI and the W.VISTA (cant remember the name...) it can be installed on win98 and comes with winXp, it can display PNG and JPG, supports transparency, but you have to install the libs and .H's lots of weird function names, not really easy to work with.
Third option, my personal choice, FreeImage library, comes with sources support LOTS of formats and transparency, really easy to use.
I would not rely on BITMAPINFOHEADER compression, it just doesn't make much sense and BTW BITMAPV5HEADER is not supported on all windows versions.
The AlphaBlend function supports 8bit transparency, cute but it's just to problematic, you have to go through every color byte, do the stupid multiplication, shift the transparency bit to MSB and then work your way, at least 2 nested for's imagine that for big images, not good.
The png lib is a bitch to compile, you have to download the zlib first, and then work your way to get it working, have a look at freeimage lib first.