It is not totally clear what you need from your question.
To obtain the number of columns in your GtkListStore you will use
gint gtk_tree_model_get_n_columns (GtkTreeModel *tree_model);
Once your GtkListStore has been set up with the initial number of columns, these can not be changed. The underlying memory management would otherwise be huge.
There are ways around this. You can store everything that you need in the GtkListStore and only show what is needed in your GtkTreeView, you can then turn off or on what is needed at any time. This would be the recommended method. You can also store pointers for items that could have different types, note this is method also requires work to be done with the GtkTreeView. The second method is also much more complex.