This is so that the driver can do as much optimization on the display list as possible. For example, if you use an array to specify a color during the creation of a display list, future changes to the array's contents will not affect the display list. Some commands cannot be saved in display lists. For example, commands that set client state and commands that retrieve state values aren't stored in a display list. If these commands are called during the creation of a display list, they execute immediately.
Display lists can call other display lists.
Vertex Arrays Another way to reduce communications bandwidth between your program and OpenGL is to use vertex arrays. Put data into the array or arrays. In the client-server model, this data is stored in the client's address space. Draw geometry with the data. OpenGL obtains the data from all activated arrays by dereferencing the pointers.