Bali is a great place to snorkel and dive. 

1) North West Bali - Menjangan Island. (the Marine National park).

The nicest place in Bali for snorkeling and diving. You have to go there with a park ranger. There are 2 parts of the island for snorkeling. One part is for the fish and another part is for the live corals. Very pretty. Water is quite clear. You can see sea cucumbers, clown fish, starfish, sea urchins, etc.

2) North East Bali - Tulamben

This is one of the most populair sites in Bali for snorkeling and diving. Here you find the wreck of the USAT Liberty. The wreck is only approximately 40-50 meters from the coast at a depth of 5 - 30 meters. The entrance to the water can be a little difficult, because the beach is covered with black stones. In combination with the waves, you have to be very carefull with entering the water. You can just swim to the wreck straight from the beach. If visibility is not very good, you mayn't see very much. Better for diving.

3) North East Bali - Amed

There is a Japanese Wreck and there are also a few places to snorkel there. But you have to go early. Once the currents become stronger (after 9.30am), you may not see anything. The sand is black in this area (volcanic sand), so when the currents stir up everything, it can look very murky as opposed to areas with (white sand), so there you can't see very much. Diving is also possible. Amed is famous for the softcoral. The hard coral is destroyed in the late nineties by El Nino. Parts are now recovering.

This is an update to this area as it is being dismissed to easerly by the above. There are many places to snorkel in the Amed area, not just the Japanese Wreck, which is known for its soft coral. Yes it is good if you can get in early for your snorkle especially near the wreck as the wind gets up during the day. Other areas that are great for snorkeling include Jemeluk Bay and Vienna Beach and the area off Bunutan Beach.  The main advantage of snorkeling in Amed is that in a space of about 8-10km of driving you can see so many different aspects of coral, both soft and hard, and the variety of fish is incredible. Generally the visibility is better in the morning and during the drier part of the year. The currents are variable depending on the tides and phases of the moon, though if you are not sure ask a local and they will advise if you should venture out too far. It is highly recomend that a visit to Amed is a must if you are into snorkeling.

East Bali - Labuan Amuk turn off is about 1 km past the Padang Bay turn off (going east). There are several locals here who have all the gear and boats and know the reef backwards . It is best to go straight here as if you book from Candi Desa or from Padang Bai, they will take you on a long boat trip to the reef at Labuan Amuk - look for the sign the the submarine.

4) East Bali - Candi Dasa

Mimpang (Sharkpoint), Tekekong (Canyon and reef) and Biaha (cave) are three very nice places for diving. Nearby Biaha is also Pasir Putih (White Sand Beach) which is a nice place for snorkeling. When you want to go to Pasir Putih, you can find many transport in Candi Dasa, who bring you to the beach. At the three islands you find very healthy coral and you often see bigger fish like sharks, tuna, mola mola (in season) and other big pegalics. Some days of the month the current can be a little tricky, but the divecenters in Candi Dasa are familair with the area.

5) East Bali - Padang Bai

Bias Tugal, Temple, Blue Lagoon and Jepun are nice places for diving. Healthy coral and lots of fish. Bias Tugal and Jepun are also nice for snorkeling. Like everywhere in Indonesia, the current can sometimes be tricky, but the local divecenters in Candi Dasa and Padang Bai are familiar with the area for diving and snorkeling 

6) East Bali - Nusa Penida, Nusa Lembongan and Nusa Ceningan

There are 3 islands side-by-side. The bigger island is named Nusa Penida and the smaller one Nusa Lembongan. The third island is between Nusa Penida and Nusa Lembongan and is called Nusa Ceningan.  This is the smallest island. At Nusa Penida are the nice places for the average qualified divers diving SD, PED, Sental and Pertamina. For the the more experienced diver are there also Toyapakeh, Crystal Bay and Gamat Bay. Famous is Manta Point, were you can find Manta Rays the whole year round.
On Nusa Lembongan the most dive spots are for the avanced diver. For example Mangrove and Blue Corner are beautiful dive sites but the current can be fiers. The area to snorkel in Nusa Lembongan is quite small, but there is quite a lot of fish.
No matter how experienced you are as a diver, listen to your experienced dive leader, because the currents can be unpredictable arround Nusa Penida and Nusa Lembongan