GPUs and CPUs are good at different things, and the JPG or PNG types of compression used on CPUs, don’t work on GPUs. Instead, we have “block” type compressors, like DXT, for textures.
DXT1 compresses color information into 4 bits per pixel, and has a maximum color resolution of 16 bits (as old VGA adapters.) DXT1 can also compress the special color “Black, transparent,” so it can be used for certain kinds of pre-multiplied alpha. This is about as much as you can compress a texture and still retain some semblance of useful color information.
DXT5 uses DXT1 for the color part, but adds another 4 bits per pixel of alpha. This gives you better transparency. Also, with a bit of shader magic, you can use the “alpha” bits for something other than alpha, to get a bit higher quality than raw DXT1. Normal maps are a great example.
DXT compression (also known as S3TC) has been around for a long time (15 years at least!) For more modern graphics APIs, there are more compression formats, that improve on DXT in certain ways, such as using 24-bit or even more for the base color resolution (useful for HDR rendering) and encoding things like “edges” within compressed blocks of pixels.
But, those formats generally use slightly more storage to achieve higher quality, rather than trying to squeeze colors down to less than 4 bits per pixel.
MIP maps increase the size of the texture by about 30%, but removing MIP maps is a really bad idea, because if the object with that texture is in the distance, the graphics card still needs to read across the whole, big, texture, thus tanking performance. MIP maps are very well worth it for rendering performance!
When it comes to 4096x4096 textures, the best way to save more space is to drop them to 2048x2048!
When you double-click an imported texture in the Unreal Editor, you will see a number of “texture usage” settings, and a number of “texture compression” settings. You can play around with those if you want. However, generally, the goal there is to get higher quality, not to get smaller on-card storage. There’s a reason modern graphics cards have 8 BG of texture memory! Also, a reason most games use smaller textures for most less-important and smaller-size objects. If an object will never be taller than 40 pixels on the screen, how much texture do you really need? 