Attribute visibility refers to the concept of hiding specific attributes that are not useful for the user to constantly see.
Do not hide: This is the default option and has no effect on any display in refinery. The attribute is visible everywhere. Use this for attributes that are adding valuable information to your records that you want to see at all times.
Hide on data browser: This option will hide the attribute only in the data browser, which means that you will not see the attribute in the record cards anymore. It also means that you will not be able to use attribute filters on that attribute. You could, however, define your data slices on an attribute, then hide it on the data browser, and your data slices will still work. This is best used for longer attributes that you don't want to clutter your data browser experience but are still informative during labeling.
Hide on labeling page: This option will hide the attribute on both the data browser and labeling page. As these are the most interactive parts of the application, this is not that much different from hiding it completely. It will still appear on some other pages, e.g. in the "run on 10" feature of heuristics. This is best used for rather uninformative attributes that you don't need to be displayed at the moment, but are nice to see every once in a while in the application.
Hide: This option will hide your attribute everywhere in refinery, where it does not negatively affect the user experience, e.g. it will still be visible in the "copy attribute" buttons of heuristics. Use this for attributes that you really don't need at the moment.
Changing the visibility of an attribute is only temporary. You can always switch back to another visibility setting, so you can adapt this to the different requirements you might have at a certain point in your project.