Q: If Windows Azure uses fixed-size virtual hard disk (VHD), do I get charged for the size of the VHD even if it's not full?
A: This is actually more complex than it seems. Windows Azure Storage charges based on the amount of data. A fixed-size VHD means all space is preallocated, which means it is logical to think if a 1TB VHD is created in Windows Azure Storage, you will be chaged for 1TB even if it only has 10MB of actual data in it. What actually happens is Azure Storage uses sparse storage. This means even though the VHD is fixed size, only data written to the VHD is actually stored and therefore charged.
Thus, if you have a 1TB VHD but only have 10MB of data in it, you only get charged for 10MB of data. This is why you should always create your data VHDs in Windows Azure to the maximum 1023GB (that's not a typo!) as you only pay for the actual data written.
Windows Azure Storage also supports TRIM, which means if a large amount of data is deleted from a VHD file, it will also get removed from Windows Azure Storage, and you will no longer pay for that deleted data size.