Quote: "I would also like my game to run on Linux"
We do not currently support Linux. From your list of requirements I would say this would be your biggest hurdle to using AppGameKit for your project.
Quote: "will it be possible just to request that AppGameKit sets up the display for OpenGL rendering then "stays out of the way" while I use OpenGL calls directly?"
In theory, yes, but you should know that I'm not aware of anyone that has done this nor have I tried to do it myself. Where normally AppGameKit examples will tell you to call agk::Sync() you would instead call agk::Swap(). The former renders all of AGK's sprites, 3D objects, etc and then flips the buffer. The latter only flips the buffer (they both also do some audio and input housekeeping). I think that if you handle all the OpenGL draw calls, state changes, and image binding then agk::Swap() would work for your purposes.
Quote: "I could also use any convenience functions it provides to make it easier to upload textures, set up buffers and/or build shader programs, that sort of thing"
That I'm less sure about, combining AGK's images and shaders with your draw calls I can't guarantee will work. AppGameKit does split shaders into their own class, but it has hooks into the AppGameKit camera (for the view matrix) and images (for custom UV offsets that AppGameKit images use), so they would likely override anything you set.