Each item will have certain attributes to describe the item. These attributes could include weapon type, weapon strength, and model name associated with the weapon. These attributes can either be generated randomly (based on conditions like player's level or item location) or the item could be created manually and stored in a file somewhere on the player's hard drive. In either case, at some point this information is stored in computer memory after being generated or loaded from file. So say on the computer harddrive there was a file which describes the following weapon:
Name: Sword of Swordliness
Associated Model: swordliness1.model
Damage Modifer: 25
Then the merchant might have a list of items like this stored somewhere:
Sword of Swordliness
Mace of Pepperspray
Harbinger of Satan
The player would go the merchant and then the merchant file would be opened and the code would go through it and go "This merchant has Sword of Swordliness. Let me look for that in that other list, the list. Found Sword of Swordliness in that list. This item uses the model named swordliness1.model. Let me open that model and display it to the user". Then the code continues and does that for all items in that merchants list. After the user selects the items they wanted and exits, the code says "remove this merchant from memory" and that step would then go through all items that were loaded and the remove THEM from memory. The model would only be in memory when there is a reason to display it. When it needs to be displayed again it gets loaded again. Of course its usually more complicated than this. Sometimes the programmer doesn't remove stuff from memory that isn't used either on purpose or on mistake. Loading something from a file takes time so programmers like to keep stuff in memory when possible, but since memory is limited they have to figure out how to balance this.
Ok now all that said let me try answering your actual questions.
1. The source of the data is up to the programmer and there's an infinite number of ways it can be done. Anything from the game scanning its directory for files it knows how to read to all data being hardcoded in the code. The files could be html. They could be xml. They could be binary blobs of data generated by tools created by yet other programmers.
2. Probably. Depends on what engine you're using and the programmer of said engine. As I said above, most any game worth its salt wouldn't even load the model unless there was a reason to.
3. They'll be stored on the harddrive waiting until something decides to display them.
Question: are you using a game creation engine like Unity? If so you might want to specify the engine so you can get more specific responses.
edit: formatted post