Ok let’s start from the top.
1. Web Forms with web controls. Web controls are synonymous with classic include files which purpose was to modularize code. Ok, what does all that mean? Often times, web applications incorporate template shell with content displayed to users. A template example would be a top header or menu that's standard throughout a site or application. Template changes affect the whole site. So in response, it's a good practice to use .ascx files to handle template real estate areas on web forms or applications with content dynamically displayed based on unique business logic.
2. Passing value between .ascx files is possible using properties or methods. However, I'd steer away from this practice as coupling components too tightly could span significant issues. Also passing parameters is highly dependent on the page processing hierarchy (i.e. get parameters in init() to use them, etc.).
3. Declaring all variable as global has scope dependencies. I'd follow the use and get rid of principle. Use only what you need and get rid of it. Declaring all variables as global would not categorize as a best practice.
4. Most programmers don't do design they just build. Exceptional programmers design and then build. I ALWAYS DESIGN, NO MATTER THE TIME COST. Design saves time in the end.
5. Most full-scale databases are harder then Access. If you're not use to command line sql, I'd pick up a book. A good one is "SQL in 10 mins."