$1 represents the first positional parameter, and $@ represents all of them.
Here's an extract from the bash manual page on my system:
Positional Parameters
A positional parameter is a parameter denoted by one or more digits, other than the single digit 0. Positional
parameters are assigned from the shell's arguments when it is invoked, and may be reassigned using the set
builtin command. Positional parameters may not be assigned to with assignment statements. The positional
parameters are temporarily replaced when a shell function is executed (see FUNCTIONS below).
When a positional parameter consisting of more than a single digit is expanded, it must be enclosed in braces
(see EXPANSION below).
Special Parameters
The shell treats several parameters specially. These parameters may only be referenced; assignment to them is
not allowed.
* Expands to the positional parameters, starting from one. When the expansion occurs within double
quotes, it expands to a single word with the value of each parameter separated by the first character of
the IFS special variable. That is, "$*" is equivalent to "$1c$2c...", where c is the first character of
the value of the IFS variable. If IFS is unset, the parameters are separated by spaces. If IFS is
null, the parameters are joined without intervening separators.
@ Expands to the positional parameters, starting from one. When the expansion occurs within double
quotes, each parameter expands to a separate word. That is, "$@" is equivalent to "$1" "$2" ... If the
double-quoted expansion occurs within a word, the expansion of the first parameter is joined with the
beginning part of the original word, and the expansion of the last parameter is joined with the last
part of the original word. When there are no positional parameters, "$@" and $@ expand to nothing
(i.e., they are removed).