A Table Variable is functionally almost identical to a temp table -- in fact, SQL server actually implements a temp variable as a temp table at least some of the time. There are some functional differences in terms of limitations on what you can do with them that make one more convenient than the other on some occasions, insert the result of an exec is a common on as is using create index to make secondary keys.
A temp var is not guaranteed to be written to tempdb. In fact the Microsoft documentation seems to suggest that it will not be written to tempdb, so in theory, temp vars can be expected to be more performant or at least not slower that temp tables.
A global temp table is a temp table that can be shared on multiple database connections. These are comparatively rare compared to temp vars and temp tables.
ADDED
The differences have been discussed at length in a number of articles article#1, article#2, article#3 and on Stack Overflow
ADDED
From some of the the comment on this answer. I've read those articles in the past, and yes, to the best of my knowledge table vars are always implemented via tempdb today. Since Microsoft could change the implementation in the future or even in 2014 version (since those articles predate 2014). That's why I used the hedge words like "in theory". The Stack Overflow article I referenced mentioned this briefly. But the additional articles references are also quite good.
I was trying to explain that they were basically the same. You can choose based on how you need to use them. And if either one could be used equally, you might prefer a temp var since MS could choose to make this more efficient in the future. Seemed like an awful lot to dump on a newbie question though.