Yes it's for parameters or also called variables. Your example is a table variable. No it's not a physical table, think of it as an in-memory only table. Once the session goes away, the table variable goes away too.
Whenever you see '@' think of having a VARIABLE which can be any type; INT, CHAR,VARCHAR, TABLE...etc.
declared variable of type table will be only valid inside and temporary in your program. IT IS NOT A PHYSICAL or TEMPORARY TABLE. (temp tables are found under tempdb databases under SQL Server).
overall they can only be used temporary during the run time of your script.