you should try it! that's how you learn.
cat /etc/passwd ... you should know this
awk -F":" '{ print $1 }' ... whatever was passed from the above will be split into fields. how do you know what was passed? see RoseD's answer. the F means field delimited by, ie the partitioning character and the $1 means the first field. so basically everything from the beginning of each line up to the first colon (:)
sort ... you should know this
>> ~/users ... result of the command above will be appended to a file called users
2>&1 ... stdout which is what you see on the screen is 1. stderr which is what you see on the screen when something isn't right, eg syntax errors, is 2. from the above command you know that all that cat, awk, sort will be redirected to that users file. this means your stdout is going to that file. next, 2, which are any errors from all those commands will be redirected to &1, which means wherever 1 (stdout) is going. in a nutshell, all those commands AND any errors will go to that file.
this stumped me before, why not use 2>1 then? because that means the errors will go into a file named "1".