This doesn’t really have anything to do with the client per say, but rather the gRPC API or SDK (C# or any for that matter).
Many methods takes a blockhash as an argument - I assume this is to provide an entry point (point in blockchain time) for the data you wish to retrieve, so if you wish to retrieve info about an account, the blockhash you provide with this call, determines from/at which state of the blockchain the account info should be retrieved… like “what do you want? = account info” - “from when do you want it? = from this-block”…or is the purpose an entirely different one?
Also, getting the latest finalized block is easiest done by calling the GetConsensusStatus method (as it takes no arguments) or something else?