Satellite data in a data structure is a data which is really used to store a value (or values). For example, consider a node of a linked list
struct Node {
int value;
struct Node *next;
}
Here, the really data is stored in value, while the next stores the pointer to the next node. Such things are overheads from the user point of view as they are merely used to traverse (in this case) something and not for storing real data.
Coming to the question, key and name[20] are used being use to store the real data while other are merely pointers. So key and name are considered to be satellite data.