Which should be used and for what? 
Is there any advantage to one over the other?
It is only a matter of abstraction levels. In most cases, you will want to use the highest level API. 

Layer1 API is a direct mapping of Amazon's API
layer2 API add some nice abstractions like a generator for scan and query results as well as answer cleaning.

When you call layer2, it calls layer1 which ends up generating HTTP calls.
In Python Boto's API for DynamoDB, what are the differences between Layer1 and Layer2?