Not sure I totally understand, but yes, the single environment color is glColor4f(r, g, b, a); You don't have to set the color of the vertices themselves. You just set the color state once, and it stays that color until you change it.

MODULATE is the default. It won't change unless your code changes it. COLOR_MATERIAL only matters if you have lighting enabled.

For completeness: there are at least three ways to "fade out" (that is, modulate two colors) in OpenGL ES with the capabilities the iPhone gives you:

1) multiply the texture color with the primary vertex color. This is what the default MODULATE TexEnv does. The primary vertex color comes from the ColorPointer, if COLOR_ARRAY is enabled, else it comes from the current vertex, which you can set with Color4f as said above.

This is the easiest way, and probably best for simply fading out a couple of quads.

2) multiply the texture color with the TexEnv CONSTANT color. You need to set up COMBINE sources and the constant color with TexEnv. This has the advantage that color data does not need to be sent per vertex, so will be slightly faster, but this won't be noticeable for only a few quads. The downside is that the constant color is stored in limited precision on the iPhone, so a smooth fade out won't be as smooth as you'd get with the primary color. You also can't change the color per vertex, so no gradient fades.

3) multiply the texture color with another texture. Set up TexEnv sources however you like to mix the texture rgb and alpha channels. This is more flexible, so you can fade with masks, but is definitely more expensive since you need to sample two textures per pixel.