Is there a way to query a SSDT project to get a list of tables or foreign keys? Similar to what you can do with the actual database?
YES! You can query the output to an SSDT project called a dacpac using the DacFx.
The easiest way is to grab this sample project from microsoft (https://github.com/microsoft/DACExtensions/tree/master/DacFxStronglyTypedModel) and build the "DacExtensions" dll then reference that from your own code (c#, powershell etc.)
When you use the DacExtensions you can then you can ask for a list of tables or foreign keys, have a look at this:
The question shows how to get the TSQLModel and the answer has how to get a list of tables.