I am concerned that the structure may be complex for casual users.
The users only interact with the database through forms, so the structure should be invisible to them. It is the job of the programmer to make the user interface easy for the user. It sounds like you have the task of being the programmer. With a database like we have been discussing, a user interface would probably take several days even for an experience programmer.
company wants to have some ability to extrapolate data that may not be included in reports in the app I give them. I'm worried that they're going to be calling me for every query they want to run.
There is a technique called Query By Forms that should be able to help. Here is a link to the Microsoft site that describes one way of doing it.
I have read about some people who have taken the Query by Forms techniques to a higher level by allowing the user to select specific tables and fields in addition to just the criteria and then code would be used to dynamically create a query. I have never done that personally but it is possible.