long независимый от программного-аппаратной платформы тип и под него всегда выделяется память в размере 4 байта. Для типа int могут быть варианты, например на 16-разрядной системе под int выделяется 2 байта.
Они одно и то же в том плане, что лучше их не использовать в сколько-нибудь ответственном коде.
Хотя бы потому, что по ним не виден их размер.
Ну и название типа к тому же будет громоздким, если добавить сюда еще и unsigned, скажем.
И поэтому лучше юзать типы вроде int32_t, uint64_t и т. д.