Regarding case fans, if your software can only handle one temperature source, then you basically have to decide which to follow. I think an argument can be made for setting based on GPU temp, considering the GPU usually ends up putting out more heat since it draws the most power (at least when gaming).
There are some software fan control programs, like
Argus Monitor, where you can set fan curves based on multiple sensors. I use Argus Monitor myself for all my systems and highly recommend it.
Another option may be to swap the CPU radiator to the top position and use it as exhaust, in which case you don't have to worry about the CPU heating up the case at all, and can just rely on GPU temperatures.
I would probably tune your fan curve for the GPU temp. Then the real key is to try to match the volume of your fans. Basically, there's no point running a case fan at low RPM if you can't hear it over your screaming GPU fan. So, you just pick a target noise level and temperature level, and then adjust the fans until they all are about the same volume at a given temperature. Once you have the basic curves locked in, you can then adjust up or down depending on whether you want lower temps or quieter system.
As for which GPU sensor to go with, I'd load up a game along with MSI Afterburner and see if you can identify which sensor is which. One of them is probably core average, one is probably hot spot, and the third might be memory temperature. Probably average core temp or hot spot make the most sense to use.