Je répond un peu au hasard, je ne connais pas java.
Quand tu programme l'un des deux problèmes que tu dois résoure est de savoir comment stocker tes données de tel sorte qu'il soit simple et efficace de les manipuler dans le cadre d'un programme que tu écrit. Par exemple tu peut avoir besoin de stocker plein de valeur que tu vas récupérer dans un ordre quelconque, ou alors tu veux pouvoir récupérer seulement la première que tu as stocké, ou alors tu vas passer ton temps à chercher des valeurs dans ton ensemble de donné, mais tu vas rarement en ajouter de nouvelle.
Pour toutes ces situations, il y a des contraintes différentes (par exemple il faut que l'ajout d'une valeur soit très rapide, ou alors ce n'est pas un problème, il faut que la recherche ou la suppression soit rapide ou alors ce n'est pas un problème, etc.). Et toutes ces contraintes sont résolu par des structures de données différentes. Parmi ces structures, il y a, entre autre, les vecteurs, les listes, les listes doublement chaînées, les table de hachage, etc.
Tout ça, ce sont des structures de données. Si, en java, elles sont implémenté par une classe chacune, alors tu as des algorithmes (ajout ou suppression d'éléments, etc.) qui sont implémenté une fois pour chaque structure de données. Mais comme il y a des choses que toutes les structures savent faire (du genre regarder un par un chacun de leur élément), si tu écrit un algo qui n'utilise que ces fonctions communes à toutes les structures de données, tu ne veux pas avoir besoin de l'écrire pour chacune d'entre elle. Tu préfère l'écrire une seule fois de façon générique. Ça donne un code plus réutilisable. C'est Bien (TM).
C'est à ça que sert une "collection". J'imagine qu'une collection c'est une interface (c'est-à-dire une liste de fonctions) que les structures de données doivent posséder pour avoir le droit de s'appeler collection. Et quand c'est le cas, tu peux utiliser sur ces structures de données tout les algo qui peuvent fonctionner avec les collections.
Par exemple, s'il y a une fonction de tri sur les collections, tu peut l'utiliser sur les vecteur ou les listes. Mais mieux encore, si tu crée une nouvelle classe qui implémente l'interface collection (c'est-à-dire qu'elle a toutes les fonctions que doivent avoir les collections), alors tu peux directement utiliser cette fonction de tri dessus. C'est donc très intéressant pour toi car tu n'a pas besoin d'écrire une nouvelle fonction de tri.
Bon, tout ça n'est vrai que si une collection est effectivement une classe qui implémente une certaine interface et si tout ça se fait en java. À confirmer par ceux qui font du java.