There are many ways to render clouds, and many more yet to discover. The era of computing power that starts will open on much awesomeness in that area.
Mark Harris and Wang are two pioneer, with Dobashi et al, (http://nis-ei.eng.hokudai.ac.jp/~doba/pub_doba.html), Antoine Bouthors, and also the guys from Lumion3d.
Flavien Brebion experimented on Dobashi's method:
http://www.gamedev.net/blog/73/entry-125220-volumetric-clouds/
I also implemented that method, it also exists in commercial products (silverlining..), and a demo of the GDC 2008.
For the "color" it always boils down to the problem of scattering. I recommend the reference in the papers of Antoine Bouthors about that, they are the most precise and scientifically correct. People generally struggle with higher order scatterings, therefore technics limits themselves to order 0 and 1 most of the time (Mark Harris). And the higher orders are just artistically decided as an ambience color. Or some empirical tricks using sky irradiance and desaturation modulated by an empirical albedo.
For the shape, either fractal, either state machine (Dobashi), either mesh (last Bouthors) + hypertexture for borders enrichment. but the enrichment would be much faster with a fin-based method. I personally intend to develop a procedural mesh construction + fractal enrichment method some day. I forsee to store the distance towards exit in each vertex (in any direction) stored in spherical harmonics, this would allow immediate shading for 0 and 1-scattering.
The rendering of the inside should be made with a separate method, a screen space method since the cloud appear everywhere when inside of it, and objects penetrating cloud volumes can be shaded using the concept of spherical billboards.