Granite is hard but porous. Though resistant to heat and scratches, it is not totally impervious and, therefore, rarely used for countertops. It requires resealing with a penetrating sealer at least once every couple of years to prevent staining. Marble is not generally used in kitchen counters because it stains and scratches easily but may be used in bathrooms. It is also porous and requires periodic resealing to prevent staining.
Limestone varies in hardness and is also a porous material that requires resealing.
Slate is a natural stone that is nonporous and heat-resistant. Scratches generally can be removed with a damp sponge or rubbed out with a steel wool pad. Vermont slate doesn't require sealing. Colors are limited. Larger projects may require hiring a contractor and getting a building permit.