I’ll stand by my previous statement that this is a huge bane for the iPhone. Elegance through simplicity works in some places, this isn’t one of them.
Basically, the iPhone has two different volume levels: your ringer volume, and your audio playback volume. When audio is playing, or when an audio-centric app is open, the hardware volume buttons change the volume of the audio. When at the home screen with no audio playing, the volume buttons change the ringer volume. The audio level can go to 0, but the ringer volume can only go to 1. The turn the ringer off, you have to use the hardware switch.