Se você os estiver passando para chmod (o programa de linha de comando), não haverá diferença. Mas em um programa em C ou similar, 0777 é octal (três conjuntos de três 1 bits, que é o que você pretende), enquanto 777 é decimal e é um padrão de bit bem diferente. ( chmod interpretará qualquer argumento numérico como octal, portanto, nenhum zero inicial é necessário).
0777 (octal) == binário 0b 111 111 111 == permissões rwxrwxrwx (== decimal 511 )
777 (decimal) == binário 0b 1 100 001 001 == permissões sr----x--x (== octal 1411 )