Best practice for export of customisations and modules

Hello everyone,

I have a query that would be a common one for many other developers.

I have created a module, deployed it using Module Builder. But after some days I might need to add more fields, some customisations(like Changing field names, changing layout of the EditView/DetailView, making changes to the custom.js javascript file, and maybe some changes to CSS file to change colour/font of field names). How do I export these changes from one system to another, or maybe development to production or testing systems?

As far as I understand, there are two practices:

  1. I need to export the module using module builder to another system. Then I need to manually make those changes in the Studio in that system.
  2. I need to export both the module using module builder and also export the customisation from Studio and install both on the 2nd system.

I wanted to know what would be the best practice, in general, because in future there might many more customisations other than those written above. Is exporting using Studio the right approach? Does it capture all the customisations done by me or there are some files that are left behind that I need to manually copy from custom folder?

One more thing, I discovered that I cannot change the field name or field type for the fields created using Module Builder, in Studio(Here I had to change a field type from dropdown to an integer field where I could enter a value). So I had to create the new fields separately in studio. Although this served the purpose but the fields created using Module, were still present in the database tables, and I am unable to remove them. Is it possible to remove them? If No, then is this a good practice that I leave a few module fields lying unused in the table?

Thanks for reading the long query.
Any help would be very helpful