That's a good question. I forget we're not all computer science students here.
Okay, a linked list
is like an array, but it's one that grows and shrinks depending on how much data is in it. And it does so very quickly, unlike dynamic arrays, which often need to do a lot of copying if you try to insert or delete data from the middle or the front.
There are two (well, maybe three) main reasons why you might choose a linked list over an array. The first is that you need to do a lot of insertions and deletions from your array of data. A good example of this would be a windowing system. You'd want to be able to create new windows, delete old windows when they're closed, and reorder the windows (possibly by removing a window and reinserting it at the front of the list) when someone clicks on a window that's in the background.
The second is that you don't know exactly how much data you're going to be dealing with. For example, if your game allows the player to be followed around by the ghosts of people he's killed, you'd have to make an array big enough to hold the largest number of ghosts you'll ever need, with the risk overflowing the array and crashing the game if you make it too small, and wasting a lot of memory unless the majority of the array is filled.
The third is that you want to process data in either first-come-first-serve or last-in-first-out order. For example, you might want to print out a list of messages with intervals of a few seconds in between each message. You might not know when messages will arrive, either...perhaps the messages are status reports from a real-time battle system, and you need to give the player time to read one before replacing it with the next. With a list, you could add messages to the tail of the list and have a HookTimer or HookRetrace remove the any messages at the head of the list (in effect making it a queue) every few seconds and print them out. As long as the list is empty, nothing will happen. But as soon as you put one or more messages into it, they will slowly be printed out one by one until the list is empty again.
If you want a last-in-first-out order (which is what you get with a data structure called a 'stack') then you can get that by always adding/removing from the head of the list.
Here's a page with...uh...well, it looks basically like what I just said. But maybe you'll find this easier to follow:
About linked lists
*edit*
Oh, this one is even better:
Using linked lists in games