Sobre linux:
Dá muita diferença de aproveitamento do hardware se ter uma instalação tão mais compilada quanto possível? Vale mais a pena de fato compilar as coisas para 64bits ou é ainda mais estável 32?
Faz muita diferença, quanto a isso, a distribuição pela qual se opta? Em praticidade e aproveitamento.
Se faz, qual seria a mais prática para espremer mais o potencial do hardware, mas sem doideras do tipo overclock e essas coisas mais exageradas?
Sim, tem diferença sim, especialmente se você for comparar uma distribuição que compila para i386 (como o Ubuntu faz, se não me engano) e uma distribuição que irá compilar para i686 (os 32bits atuais) ou x86_64 (64 bits). Há entre as diferentes versões do x86 (i386, i486, ..., i686) mudanças nos conjuntos de operações que o processador entende no mais baixo nível (conjuntos foram adicionados, como o MMX, SSE, SSE2, SSE3, SSE4, 3Dnow!, etc).
Um binário que foi compilado com suporte a MMX e aos 4 SSE, por exemplo, não rodará em um processador que não tenha suporte a essas operações. Por isso, as distribuições compilam os pacotes usando apenas um subconjunto modesto dessas opções. Quando você mesmo compila seu programa, você pode ser mais específico e criar um binário feito especialmente para o seu processador o que geralmente faz um binário mais rápido.
Outra vantagem de compilar seus programas é você ativar só o que quer. Por exemplo, o mplayer no Arch Linux vem com suporte a LIRC (controle remoto) e Samba (pastas compartilhadas do Windows). Eu não uso nenhum dos dois, então posso fazer um mplayer mais 'enxuto'. Isso também elimina a necessidade de carregar bibliotecas do sistema (.so), o que reduz o consumo de memória do programa e o tempo que demora para ele carregar.
Quanto a 64bits vs 32bits, a diferença de velocidade não é muito grande e geralmente ocorre só nos programas que envolvam áudio e vídeo (ripar um CD, por exemplo, é mais rápido em 64bits). Em parte isso se deve por uma superioridade técnica de se estar usando 64bits mesmo, mas acho que boa parte dessa diferença de velocidade se deve àqueles conjuntos de operações que eu falei a cima: quando se compila para i386, não se coloca nenhuma operação extra, enquanto que todo processador 64bits tem suporte a pelo menos MMX, SSE e SSE2. Interessante mesmo seria comparar o i686 com o x86_64 e os dois usando as mesmas operações. Na mailing-list do Arch falaram numa melhora de 1.1x na velocidade entre um i686 e um x86_64.
O grande "problema" do 64bits não é estabilidade, mas sim disponibilidade de programas. Isso nem é um problema mesmo porque é possível rodar binários de 32bits em um sistema 64bits, mas é um incômodo. 99,9% dos meus binários são 64bits, mas o skype não é. Isso significa que eu tenho que ter duas versões de umas 30 bibliotecas, uma pra 32bits e outra pra 64bits. Com softwares livres isso geralmente não é problema, e isso já foi, mas não é mais, problema com o flash e com o java, mas agora os dois tem verões nativas de 64 bits também.