A questions difficulty is dependent on the one asking it and your are working with something new to you so don't feel bad asking anything! People are here to help in any way we can!
To start a collection in powerapps is a list or array type data structure that we use to store data locally that we dont want to fetch multiple times or dont want to store to begin with. There are 3 ways to add to a collection generally these being Patch, Collect, and ClearCollect.
Patch Function - this is used to ADD A NEW ITEM to a list OR EDIT AN EXISTING ITEM in a list
Collect - this is used to ADD ITEMS ONLY and will simple slap this item on the end of the list
ClearCollect - this is used to first clear the list to make sure it is blank, then Collects the item to the now empty list the same was Collect would above
For this we just use clear collect in order to make sure that we are creating duplicates of the values. What can happen is a powerapp function could return the first item it matched with but that could be an out dated item and it wasnt removed when the new version of that item was added to the list. This is prevented by using ClearCollect when you can.
Collections can also be hardcoded and static or grab values dynamically from a user input field of some type.
ClearCollect(localEmployees, Employees) -> this copies the SP list Employees to a local collection in the powerapps called local Employees
ClearCollect(localEmployees, {FirstName: TextInput1.Text, LastName: TextInput1_1.Text, etc...}) -> This takes the values input by a user into text input fields, creates an object with them and then stores that object in localEmployees collection
ClearCollect(localEmployees, {FirstName: "Mike", LastName: "Jones", etc...}) -> This will create this list with the hardcoded values
Last question was how to check if a User().Email value is already in the list or not. Here is how you would do that in the powerapp...
Set(results, Lookup(listName, Email = User().Email)) -> this will search for an entry in the list (or collection) that has an email that matches User().Email and if it exists will return that item and store it in a global variable called results. You can then access this items properties by using the dot operator like results.FirstName etc.
This can also be used in ways such as this...
If(IsBlank(LookUp(collectionName, Email = User().Email)), Navigate(CreateNewEntryPage), Navigate(ShowEntryPage));
This will look for a matching email, return one if it exists and return blank if it doesnt find that entry. After it does that it will either navigate to the createnewentrypage if it was blank to allow a user to create their user or to the showentrypage if the user alrady exists where you could show your list fields and/or edit them.
This was alot but I hope it helps! good luck and if this solves your issues please mark it as the solution.