1. from a page or usercontrol one can resolve urls relative to the application root using Page.ResolveUrl("~/your-relative-path");
If you are using multiple sites based on folder names then the first folder segment may be virtual to represent the site. In that case we have built in SiteUtils.GetNavigationSiteRoot();
also if inheriting from mojoBasePage or SiteModuleControl there are built in properties for SiteRoot and ImageSiteRoot which would both be the same except when using folder multi sites in which case SiteRoot would include the virtual folder segment, similar to SiteUtils.GetNavigationSiteRoot()
3. as with most questions you can study the existing source code to learn from examples of how we did things. the mojoPortal.Features.* set of projects contains many features (many SiteModules and many supporting pages for different features including blog, forums, etc, etc) in the same projects, whereas the WebStore set of projects represents only one feature