Faut-il installer l'un de ceux-là, tous ?
Il faut installer celui qui correspond précisément au noyau que tu utilises : En l'occurrence, il te faut "linux-headers-3.5.0-25-generic".
MAIS si tu n'installes que ce paquet, à la prochaine mise à jour celui-ci ne suivra pas.
Je suggère d'installer "linux-headers-generic", qui maintiendra la dernière version des headers comme "linux-image-generic" maintient la dernière version du noyau. Tu peux aussi directement installer "linux-generic", qui dépend des deux : en gros, quand "linux-generic" est installé, tu es assuré que tu as la dernière version du noyau ET la dernière version des headers.
En marge du problème, à quoi sert un paquet linux-headers, en plus du noyau ?
Version très simplifiée :
Pour pouvoir compiler un logiciel utilisant une bibliothèque (le noyau peut être vu comme une bibliothèque), il faut les "headers" : ce sont des pointeurs qui disent "tu trouveras telle fonction ici, telle autre fonction là".
Comme ça, quand tu compiles un logiciel (ou, en l'occurrence, le pilote pour VirtualBox) tu sais où pointé, et une fois le truc compilé ça pointera de la manière dont ça aura été indiqué lors de la compilation.
(c'est aussi pour ça qu'il faut recompiler à chaque nouveau noyau : il faut s'adapter aux modifications récentes du noyau et "pointer" au bon endroit).
PS : mon explication est TRÈS simplifiée et les puristes diront que c'est à moitié faux, imprécis, etc... Disons que c'est une explication suffisante pour comprendre pourquoi tu as besoin des headers... 🙂