As you mentioned common modules are utlity modules which will never going to get released so creating branch/tag/trunk folder for it will be of no use.
Since importerModule/Module1 , importerModule/Module2 , webModule/Module1 and webModule/Module2 have independent release cycle there is be a need of seprate Tag Trunk and Branch folder for them .
As SVN provides flexiblity to choose the way to maintain folder structure there can be many ways to handle the requirement but I like the following one:
Layout
Where webModule and importerModule will have the tag/trunk/branch structure.
--ParentModuleProject
---webModule
-----Trunk
------- common
------- Module1
------- Module2
-----Branches
------- Module1-R1
------- Module2-R3
-----Tags
------- Module1-R1-1.0-120413
------- Module2-R2-2.0-200313
---importerModule
-----Trunk
------- common
------- Module1
------- Module2
-----Branches
------- Module1-R6
------- Module2-R8
-----Tags
------- Module1-R5-1.0-120413
------- Module2-R7-2.0-200313
By using this layout you dnt have to manage seprate tag , trunk and branch folder for each module.
As the trunk will be contain the key components of you application webModule and importerModule and you can easily create release branches out of it for Module1 and Module2 like
svn copy "^/webmodule/trunk/module1" "^/webmodule/branches/module1-r1".
Seprate release branches of Module1 and Module2 will handle the different release cycles.
Since tag is just a snapshot of what you released keeping the tags of Module1 and Module2 together will not be an issue like
svn copy "^/webmodule/branches/module1-r1" "^/webmodule/tags/module1-r1-230413"
Hope this helps
Jyotsna