Obviously, you start by surrounding your existing code in a namespace block. Global variables remain global until you change your code to use variable instead of global. Some variables may make sense to leave at the global scope. It is not strictly necessary because they can always use qualified names to reference your procedures. An export list is a good hint about which procedures are expected to be used by other packages.
Callbacks execute at the global scope.
If you use variable traces and variables associated with Tk widgets, these are also treated as global variables. The Tcl namespace facility does not directly provide classes and inheritance. It just provides new scopes and a way to hide procedures and variables inside a scope. There are Tcl C APIs that support hooks in variable name and command lookup for object systems so they can implement classes and inheritence. The goal is that various object systems can be added to Tcl as shared libraries.