List es una interface. Vector es una clase. Basicamente, la implementacion de Vector soporta acceso sincronizado, lo que permite a multiples hebras acceder a los objetos del vector de forma segura. Arraylist es similar a Vector pero sin esta caracteristica, lo que hace a esta coleccion mas liviana. Utilizar una interface para trabajar colecciones permite flexibilidad, debido a que es posible cambiar de una implementacion a otra de forma transparente.