You have only talked about files, and not detailed whether they are part of the same filegroup, each file is its own filegroup. But the error message in combination with the names of the files and the uneven space usage, makes me believe that you have four different filegroups, PRIMARY, Staging, Index and Data.
Staging is full, but you have some space to spare in Data. You can move one or more big tables from Staging to Data with:
CREATE CLUSTERED INDEX indexname ON tbl(col1, col2, ...)
WITH (DROP_EXISTING = ON)
ON Data
For tables that are heaps (which is maybe not that unlikely in something called staging), you would have to create a clustered index and then drop it. Drop any non-clustered index before you do this. Or just create a new table and copy data over and drop the old table and rename.
You talked about indexes with 50% fill-factor. Yes, there may be some space to gain - but that only helps you if they are located in the Staging filegroup. If they are in the indexes filegroup, that is not going to help much.
A more radical idea, which is more work, but which will give you more flexibility is to restore the database on a different server with plenty of free disk space and move everything to the Data filegroup, and then drop the Staging and Indexes filegroups. Then backup the database again and move it back to the original server.
And then there is the solution with least amount of work: Get more disk space. (At least technical work; I don't know much local red tape you will have to get through, to get that disk space.)