I use a rotary coconut grater which saves A LOT of time and hassle.
1. I start by piercing the eyes of the coconut and draining the milk.
2. Next I use the back of a heavy chef's knife to whack all the way around the coconut in a circle several times. This causes the coconut to split in half. This is the easiest way to open a coconut. i've seen so many different ways: heating in the oven, using a hammer, throwing with force onto the ground, using a band saw... forget them all and give this a try. Here is a video so you can see it in action: http://www.kitchendaily.com/2010/08/09/how-to-open-a-coconut/
3. Then I attach my coconut grater to the kitchen counter and shred the coconut halves.
Here is the grater I own: http://www.culinaryexotica.mybigcommerce.com/coconut-grinder-coconut-grater/
It is a neat tool. It is a little expensive, but if you want truly BPA free fresh coconut milk on a semi regular basis I really recommend getting one. it is so much easier than trying to pry the meat out of the coconut shell.
4. I add 1.5 or 2 cups of hot water (but not so hot that I can't immerse my hands in it) to the coconut in a bowl and "massage" the grated coconut for several minutes. I really work it with my hands, squeezing and pressing the meat into the hot water.
5. I usually let it steep in the hot water 15-20 minutes.
6. Last I line a colander with several layers of cheesecloth and squeeze out the coconut milk into a bowl, wringing out the meat to get all the milk.
You can repeat with a cup or so more hot water and the spent coconut to get a second, weaker pressing of coconut milk. My Thai friend does this and mixes the two milks together. I usually keep the first pressing separate if I am making something thick (like a curry) and find a yummy use for the weaker milk, like in a soup or a drink. If I am making a dish that isn't so thick I mix the milks together.
You are not going to get a ton of cream like you get in the can, but according to my Thai friend the milk that you make is much more traditional. If you want more cream and less milk then use a smaller amount of water, or make the coconut milk as above, pour the milk into a gravy separator, wait for it to separate, and then pour off the watery milk leaving the cream behind.