Array list uses an array internally which is dynamically increased as you need it. (You don't see it happen)
On a Linked list, every "member" is pointing to the next one. So, when you add a new member, there's the head/start of the list pointing at it. When you add another member, the previous one (who had the head of the list pointing at it), will point at this new one... etc..etc..etc..
You dont need an array, yet they all are stored in order and all can be accessible.
There is also another kind of linked lists, such as double linked list. Also stack, queue, etc...
PS: Im pretty sure you can find a better explanation around the web, or someone posting here