The column is completely arbitrary, it can be for anything. The content inserted in the column at each row can be anything within the scope of the action hook. It is logical the data be related to the other table content, but it is not required. The data is often from the database, but this is not a requirement.
I actually looked a little deeper into WP_List_Table last night for my own benefit during some free time. (Is that pathetic?) The filter for adding columns is very consistent amongst the various class extensions. The only variable is the screen id. The hooks to insert cell data are much more variable. They are usually actions, but are filters in some cases. The Posts table (used for Pages as well) actually has several possible actions, it appears you can use either ‘manage_pages_custom_column’ or ‘manage_page_posts_custom_column’ for Pages. The correct filter to add columns for the Pages table appears to be ‘manage_edit-page_columns'(note the one hyphen ‘-‘ ).
I’ve not actually tested any of my findings, but it comes from a fairly thorough study of the class definitions and screen IDs. Adding the column is pretty straight forward, but the action to output content takes some care. The action fires for every custom column added, so your action callback must not only get the ID for the current row’s entity, but must also check the column name to ensure the correct data is going into the correct column.
It takes some work to wrap one’s head around how list tables work, but once you get it, it can be a very powerful tool, especially when combined with AJAX to provide interactivity.