The left-most part of the table is actually labels and not a column as such. It shows the number of each row: the column's rows number from 1. The lozenge in which the row number appears is sufficiently wide to allow for four digits. These labels cannot be edited. It is there to help when working on the tables's data to give a quick visual reference to that row. A right-click (or ⌃+click) the column header opens a pop-over to edit the list of columns or to apply styles to the column.
The first actual data column is always the note's title ($Name). Essentially, column #1 is fixed, in terms of content.
By default, a new table view shows the labels and 3 columns: the fixed $Name columns (and) and 2 data columns for ($SubTitle and $Created). If the container has any Displayed Attributes these are used as the views defaults. Also, if the container's $TableAttributes has a value, the listed attributes are used to populates column #2, etc.
Table view expects a minimum of 2 columns: the $Name data and one or more user-definable column(s). Unlike other user-defined columns, #2's source attribute can be changed, but the column itself cannot be deleted. Columns #3 and above can both have their source changed and be deleted.
Tables may be sorted using a chosen column. Left click on a column header to sort by that attribute; left click again to reverse the sort direction. Sort order for a column depends on the attribute type; numbers are sorted numerically, strings are sorted lexically. Sorting on a column affects the patent container's $Sort.
Dragging a column header left or right change the order of the columns.
The alignment of column headers follows the alignment of the column.