Grid vs TIF vs IMG

Back in the dim and distant past, these formats came about from different proprietary software developers. GRID came from ESRI. IMG came from ERDAS and TIFF came from Aldus (are they still on the go?). So that explains why we have the three of them. There are some differences though:

  1. Portability - of the three you mention the GeoTiff is probably the most supported in all sorts of software, but that support is not necessarily complete (some software can't cope with floating point Tiffs or more bands than the standard RGBA). The Grid format is probably the least well supported and IMG is better supported but just a bit more obscure.
  2. Compressibility - the different formats support different types, or no, compression and so the file sizes can vary, but then, if you are really serious about major compression rations, I wouldn't opt for any of these three but turn to JP2000, MrSid, ECW or one of the other wavelet technologies. LZW compression does a good job but can't pack files as small as the wavelet tech.
  3. Digital Encoding - the way the data are digitally encoded are different, but with software like GDAL (and all the proprietary software that is built on GDAL translators like ESRI's raster support in its interoperability suite - yes, you are paying for something that is technically FOSS4G!) we don't need to worry about that.
  4. Data arrangement - The three file formats have different arrangements of the data. For instance, a Tiff packs it all into one file with the possible addition of world and projection files. With the tiff, the pixel value is the data, end of story. The Grid has a more complex structure including an 'info' folder with all sorts of files for projections, attributes etc. I forget the arrangement of the IMG but it is slightly different too.

In GIS we have a massive range of raster formats to choose from and not just these three. They all have differences, some are too subtle to care about within one software package. Other differences are more fundamental. Know your package and who your are going to swap data with - then choose your format... but just be careful about portability.