One of the very important behaviours I work on with new puppies is teaching them to give up items when asked to prevent resource guarding from developing. 

We fill a bowl with food, provide cushy pillows for sleeping and ensure the water bowl is full. You would think they get it. That the dog would understand we will provide everything they need forever.
  Then why, sometimes, when you try to take something away do they growl, bark, snarl, snap and sometimes bite?

Resource guarding is a very important behaviour  for survival in the wild. Think of it: to survive you need to be able to find and keep food, water and shelter. If the animal does not hang on to his resource; fight for it if another tries to take it - he will not survive for very long. It's a normal functional survival behaviour.
Enter the domesticated dog. Even if you provide endless supplies of resources, most dogs will guard at some point, depending on the value of the resource. The Dominance Paradigm is still very strongly held on to by some, even though it has been debunked over and over. People want to do things to "show the dog they can".
During a puppy consultation I discuss and show how to teach puppies to give up items when asked.  Often a new client will say they have already been teaching the puppy by reaching down and taking away their food bowl while he's  eating.  When I ask why they choose to teach that way, the response is often something along the lines of  "because he has to learn that I can".  
While I agree that humans need to be able to reach down and safely remove an item, I don't believe the way to teach it is to swoop down while they are eating.  Stop and think about this for a minute. We want to be able to reach down and safely remove something from an animal with large teeth and  the ability to break skin and cause serious damage. 
Is it more effective to teach the approach of a human predicts good things - or - the approach of a human is scary as he never knows when one will swoop down and take his food away?  Think of what an animal must do to survive. He has to guard his resources. If he never knows when someone is going to grab his food away, what do you think he is learning? By being unpredictable and removing sustenance, you create a dog who learns to resource guard and likely gets better and better at it over time. That's usually when a trainer is called in as the dog has bitten the hand that reached down.
My preferred way is teaching puppies that taking something away is wonderful. I do this with lots and lots of trades. Whenever the puppy has something, either in his mouth or very close by, drop some kibble or freeze dried chicken or other yummy treat near him. When he drops the item to eat the treats, pick up the item briefly and return it. Sometimes don't even pick up the item. Simply walk by and toss a couple of treats his way.
If he grabs a forbidden item, take a deep breath, go to the kitchen, get something yummy and do a trade. No yelling or screaming necessary.
With many repetitions of this, you end up with a dog who looks forward to your approach and learns that giving up something results in something even better!! Who doesn't want that?