Well, one resource, although less organised than perhaps desirable ;), is the Wiki -
https://wiki.tcl-lang.org. You will find many examples of Tcl/Tk programs, techniques and so on.
To answer your immediate questions or at least provide a bit of a guide:
Source files may contain any number of procedures, namespaces, TclOO classes - it is up to you to organise your code into manageable files. As a rule of thumb, I put the procedures belonging to a namespace into their own file, so that there is one namespace in that file. But if the file gets too large, it is no problem to distribute the namespace and its procedures over several files. (That is in fact the organisation of my Plotchart package in Tklib. Other large packages such as Tablelist do that as well.)
Namespaces can be used to organise procedures and variables into smaller units than the whole program. The advatage is that you can only call a procedure if its name is fully qualified (includes the namespace it belongs to) or if you deliberately import procedures from a namespace. That way you have more control.
Of course, TclOO goes a step further: the methods of a class can only be called via objects belonging to the class.
Starkits are a technique to pack all the source code (and binary libraries) into a single executable file. As that file includes the Tcl/Tk run-time, you have no need to install Tcl/Tk on the target machine, making deployment a lot easier.
The Wiki has a bunch of links to articles focusing on certain aspects of Tcl/Tk as well links to books, both recent and somewhat older.
Regards,
Arjen