sp_spaceused can be used for databases and tables to find the "actual
database_size" and the "unallocated space"

Do the same attributes also apply for file and filegroup objects?
I mean is there something like actual file_size and actual space for files and filegroups?

If yes, can I know the tool (query/stored proc. etc.) for querying the same?

I feel that there must be some distribution of the "unallocated space" at the database level to the filegroup and file level.