It doesn't optimize the call to glDrawElements.It just executes the call and,instead of drawing the data, it caches it on the server in a (hopefully) HW friendly way.Anyway whether you called glDrawElements or used immediate mode,it wouldn't make any difference.Thats why you can free the arrays afterwards,the data is allready at the server.I'm not sure about the second one but it shouldn't have much to do w/ display lists,rather with wehter its generally better to use QUADS or TRIANGLES.But since opengl tesselates everything to tris before rendering(doesn't it?) it shouldn't make a difference since it propably will be tesselated during list compilation.



