Linked lists are an alternative data structure to arrays that uses memory dynamically. Each node of a linked list contains data and a pointer to the next node. Key aspects of linked lists include head and tail nodes, methods for adding and removing nodes, and traversing the entire list using iteration. Linked lists are useful when the size of the data structure needs to change frequently.