Virtual fields are a pure QGIS concept. The data provider (your database) does not know the slightest bit about their existence.
Virtual fields are just put "on top of" the real data, their values are temporarily regenerated by QGIS every time they are required somewhere.
The table manager works closely related to the data provider, so it also does not work with virtual fields.
Virtual fields are always appended to the end of the attribute table (just like joined fields as well). This position is determined by QGIS, you do not have any control over it. The only control you have is between multiple different fields by defining them in the appropriate order.
To materialize a virtual field, you can use the attribute table and create a new non-virtual field based on the virtual field with the expression
"[virtual-field-name-goes-here]". Once you have materialized this field, you can order it in the table manager just like any other field. At the expense of no longer having automatically updated values.
Edit based on Helena's comment
To get a snapshot of the current state of the layer into a separate file, it's possible to use save As, since this will also include virtual fields.