Cozumel is well-known for its great reefs for diving -- many are shallow enough to make snorkeling enjoyable (if the reef is deep, you can't see the fish and vegetation as well). The best snorkeling experience is to take a boating excursion to a reef, but there are plenty of snorkeling spots easily accessed from shore.
Sandy beaches do not attract fish - they need the reef pilings or rocks for food. The best area is south of town from the new cruise pier to the Intercontinental hotel. El Cid La Ceiba is a timeshare hotel very close to the pier that has a pool, jacuzzi, restaurant, bar, dive shop, and palapas. At times, there is a $6 fee to use the facilities, but many times you can just walk onto the property, have lunch or a drink, and stay for the afternoon. You can enter the water near the dive shop -- there are steps with a rope to help you, as they do get slippery. You don't need to propel yourself; the drift takes you along the rocky shoreline that is home to schools of fish -- even a baracuda or two -- and about 100 feet off shore is a sunken plane that is very interesting, sunken in about 25 feet of water.
Chankanaab - an ecological park that charges a $12 fee. It has full facilities, a somewhat sandy beach, and a snorkeling trail. Just be aware that when the cruise ships are in port, it gets very busy. Bring bug repellent -- the swampy area can attract mosquitoes and flies.
Fiesta Americana - We always like to spend a few hours here. It's just before Chankanaab (take the first exit when you see the Chankanaab sign -- you miss the resort if you stay on the main highway). They have a good-size waterfront restaurant, a swimming pool with stone deck, a dive shop, and a long pier. Snorkeling equipment is available, and you can lounge in the sun or under palapas or sea grape trees – they even have beach bar service. Enter the water at the beach end and drift to steps or to the pier, where you can climb a ladder to exit. Non-snorkelers attract fish with stale bread given to them by the restaurant , so you're guaranteed to see lots of fish by the pier.
Intercontinental - This is Cozumel's five-star property. They now charge a $20 per person to enter (they must have been inundated with cruise ship passengers). Again, enter by the rocks and drift past the restaurant, where you can come up on the beach. This is a natural beach and is quite nice. If you enter from the beach, you'll tire too easily, because you'll be swimming against the drift. Many times, there is music midday at the restaurant. You'll enjoy your day here.
Wherever you choose to go, there'll be warm, calm, clear water, an abundance of fish, and an experience that you'll never forget