Web API takes advantage of the http protocol more natively. Odata is an Open standard embraced by a lot of the big players. I can only speak from my experience int toying around with Odata, and recently discovering Web API and doing some research.
OData is cool because it's an actual standard. You can easily create a database and expose it over HTTP. This means you can traverse your table structure without any configuration (i say that loosely). You can also run queries through the URL which can include some light LINQ:
/products/orders/[put some linq-ish query here]
This is arguably good or bad. Authentication is standard and built it.
Web API, is more interesting from my perspective. It utilized the HTTP functionality (error messages, et al.) and is a bit more "native" to true RESTful requests. I really haven't played with it too much.. But i've read around and have kind of "heard" that MVC and Web API may be "married" some day, again, maybe good maybe bad...
When i was playing with OData, i created a Stored Proc, Mapped it into the entity surface, configured a strong return type and then hooked it up to a URL request and BANG, there's my RESTful request mapped to my typed result stored proc. It was fairly straightforward, and i was able to get exactly what i needed.
I haven't had a chance to play with WCF API in too much detail, but i would say it's the way to go for client development since it's more of a purist approach to REST. If you're going to be making more or less "straight" back and forth calls and retrieving "View Models", it will provide a more native interaction.
On the other hand. If you'll be making complex (ish) queries on the data based on the client interaction and you want to "build" the query logic and pass it as a parameter, then Odata could work.
The way i look at it is if i need to expose my data in a structural format (meaning table / relationship structure) and then query it directly form a client, then Odata will work best. It's also good for allowing "Others" to access the data (with proper auth etc..) which is why it adhere's to the OData protocol
If you want RESTful requests where you're dictating the URL (/products/orders/22, and creating complex "result sets" from your "hidden" managed code and data structure AND you might also benefit from the HTTP response messages, then the Web API would probably be the best bet..
again, this is all from research and toying. I haven't implemented either in a production / full blown app scenario. I think they'll both have their strengths and weaknesses, and there's definitely some overlap