You should indent your code.. Especially if you are going to teach others to script.
I guess I could explain for you what the "string& asName", "float afTime", "string& asFunction" and all those mean.
Lets use your own tutorial as example.
In your AddEntityCollideCallback you have the parameters "Player", "RoomTwoArea" and "1".
In you CollideRoomTwo function you "import" these parameters with a new name you specify.
So
AddEntityCollideCallback("Player", "RoomTwoArea", "CollideRoomTwo", true, 1);
calls
CollideRoomTwo(string &in asParent, string &in asChild, int &in alState)
This means Player is now a variable named asParent inside of the CollideRoomTwo function, RoomTwoArea is named asChild and the 1 in stored inside an integer variable called alState.
Now this doesn't really change anything for this specific script, but it's good for doing a general function that you use several times for several different entities and locations (unlocking doors, ambient noises, levers).
Example, this code would unlock any door that calls it:
void KeyOnDoor(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked(asEntity, false, true);
PlaySoundAtEntity("", "unlock_door.snt", asEntity, 0, false);
}