If you are looking for a great underwater experience in Bali, then Menjangan is the place to go. Menjangan is a tiny island just off the coast of Bali National Park. Snorkling here is amazing.
A good way to get there is to stay around Pemuteran Bay (which is also well worth a visit - don't miss the Turtle Project while you are there!). It takes around 30 min by boat to the reef from here.
When you get there you will have a beautiful view of the national park, the island Java in the horizon and Menjangan island. And when you get your head under water you will be amazed by all the colorful fish and corals. This is one place I would love to go back to.