I have no answer to the why, but yes with GCC under Windows the long and int have the same size, which is nevertheless C standard conforming:
int must be at least between -32767 and +32767
long must be at least between -2147483647 and +2147483647
The sizes depends on the machine, the OS, the compiler… But why on the same x86_64 machine the GCC compiler proposes different sizes on different 64 bits OS?
Concerning long long the C standard says they must be at least between -9223372036854775807 and +9223372036854775807 (-2^{63}-1 and +2^{63}-1). Therefore at least 64 bits.
Yes it should, the Fortran 2018 standard says Table 18.2 that c_long is interoperable with long int, and c_int64_t with int64_t.
And there is also c_long_long for long long int (as far as I remember they are 64 bits both under Windows and Linux).
But it’s interoperable under all systems only if you respect the minimal range printed in the C standard…