O que você encontrará é que alguns programas usam 'fseek' para se mover em um arquivo.
int fseek ( FILE * stream, long int offset, int origin );
Se eles fizerem coisas relativas ao início do arquivo (SEEK_SET para o parâmetro de origem), então eles só terão um inteiro de 32 bits assinado como parâmetro de deslocamento, para que eles possam obter apenas 2 GB no arquivo.
Para programas que não usam fseek / ftell (por exemplo, um programa que lê apenas todo o arquivo de maneira linear), e para programas que usam fseek para ir e voltar um pouco da posição atual ( SEEK_CUR com deslocamentos < 2G), não há problema, tudo funcionará muito bem, não importa o tamanho do arquivo. São apenas programas que acessam aleatoriamente os dados do arquivo que terão um problema.
Note que alguns ambientes possuem as funções 'fseek64' e 'ftell64', que dão ao chamador um inteiro assinado de 64 bits, e assim acessam o que quiserem.