Selected Answer
The code sheets of ThisWorkbook and each of the worksheets are intended for code which extends their functionality, especially by building on workbook and worksheet events and possibly functions directly supporting such procedures. All other code doesn't belong in those modules and often won't even run if placed there.
The inversion of the above is that code belongs in a "normal" code module unless it is an event procedure. Event procedures are easily identified by their prescribed names like Worksheet_Change or Worksheet_SelectionChange or Workbook_Open. These names are also indicative of the code sheet on which they should be placed.
Procedures which are called by event procedures may be placed on the same code sheets as the event procedures that call them if they are declared as Private. If they are to be called from other parts of the VBA project they must be declared as public and placed in a "normal" code module.