I think what you might be missing here is you can see the array in debug mode, so you can view the list of items and when you press 1 see it added to the list of items.
It's all in the manual about push but basically the array in your game is a list of found items at co-ordinates 1,0 2,0 3,0 4,0 etc. When you push something at the 'back' you are adding to the list, so when you push it becomes 5,0. Run your game in debug layout, you can see the array there as a list. When you press 1 it is pushed to the array, added to the list. There is not much to it, just think of it is a list and you are adding this item to the bottom.
When you find an item it is pushed to the array/list. This means it is available to pick from with the picking code, as the picking floor(random(1, array.width)) picks an item from the list. Instead of setting it to a certain value as you did with the default items, push just adds it to the back of the queue.
1. When you start the game, only the ones set exist, the ones you put in your on start of layout set the default items.
2.You set the default items. Anything you find/unlock later is pushed to the back
3. Explained above