Bonjour timon44,
List est une interface qui hérite de Collection, et ArrayList implémente List.
Autrement dit, ArrayList implémente directement ou indirectement à la fois List et Collection, c'est pour cela que ça fonctionne.
Pour l'explication, Collection est l'interface qui permet de manipuler des groupes d'objets. Elle est très générique, et donc on peut décomposer les éléments qui la composent en plusieurs sous-groupes, notamment les listes, les ensembles, les files... Chacun de ces sous-ensembles aura des caractéristiques précises (par exemple les ensembles ne permettent pas d'avoir plusieurs fois le même élément stocké, contrairement aux listes par exemple).
Pour conclure, tu peux donc manipuler ton ArrayList via les deux interfaces, je ne pense pas qu'il y ait de règle précise. Personnellement, pour avoir une meilleure lisibilité je la manipulerais via une List. Ensuite, si tu veux être le plus abstrait possible, tu peux toujours utiliser une Collection.
Cordialement,
rtfm and jfgi