Python: Difference between context’s `selectable_objects` and `visible_objects`?
These flags match the 'selectable' and 'visible' states of objects (also shown e.g. in the outliner, in the left columns).

selectable_objects is a subset of visible objects, since no hidden object shall ever be selectable.

Note also that objects on hidden layers are also considered hidden (i.e. are not in visible objects, even if their own visible flag is ON).

As for the last part of your question… it depends on what you want to do! Please be more specific.