Snorkelling here is nice if the conditions are right...
Bali Barat, or west Bali National Park, has a range of habitats, including monsoon forest, mangroves, and coral reefs. It is best known as the place to see the Bali Starling.
Bali Barat was set up by the Dutch in the 1940's to protect wild populations of Bali Starling and also Bali Banteng. This national park protects a peninsula in the west of Bali, and although it is not as big as it once was, it is quite mountainous, and includes a range of habitats. The Bali north coast road cuts right through the middle of the park. This allows access to walking trails on either side of the road (some of which are cemented, so they are very easy to walk on), as well as the Ranger station and boat hire at Labuhan Lalang. Last time I was there, local ranger guides were required.
The park also includes a small island called Menjangan. This can be accessed by boats from Labuhan Lalang. This small island has very good snorkelling, with a variety of fish and coral. However, certain currents may bring in a huge amount of rubbish, so much so that when you surface, you are snorkelling through a layer of garbage.
There are various nice accommodations just outside of Bali Barat National Park on the access road to the east that goes along the north coast of Bali. The most accessible town is on the western side of the park; Gilimanuk, where people cross by ferry to get to Java. And because this national park is in the extreme west of Bali, it can also be reached from Java.
Search google and this website: