Blueprint "Array Get by Reference", and edit struct elements directly

The distinction likely doesn’t matter if you don’t know which to use.

Basically, if you want to make changes to the variable, you’ll need a reference. A reference points to the address of the original variable, which means that any changes to it are done to the original variable.
If you just want the variable in order to look at its content or store some temporary calculations inside of it, a copy is perfectly viable. A copy stores a copy of the value of a variable, as the name would imply. Make changes to it and the changes will only affect the copy, not the original variable.
Read up on pointers if you want to know more about the differences.
If you are using an old tutorial, it most likely works under the assumption that references are not possible. Meaning that the code will be intended for copied values anyway.

tl;dr
If the tutorial is that old, go with the copy.