ArrayList = New improved Vector without synchronisation, its fast, its what you want most of the time if not all of the time.
Vector = The old and slow version of holding scalable arrays, its synchronised.
Basically the difference is just like it says in the API.
As of the Java 2 platform v1.2, this class was retrofitted to implement the List interface, making it a member of the Java Collections Framework. Unlike the new collection implementations, Vector is synchronized.
If you for some reason would like a synchronised list you can use the Collections.synchronizedList method. See Collections (Java Platform SE 6)