Ismail,
1. Yes, it's possible. There's a ready-made creature spawner in the 3rd mission of the campaign for Freya in the Hammers of Fate expansion, called CreateRebels(). You can use it and modify it to suit your needs. I've already done this; together with Khottabych, we created a creature spawner that places creatures at specific points with random selection, and if those points are unoccupied. So, I think you can do something similar to respawn creatures, artifacts, and resources. However, the developers have already implemented a random generator for spawning creatures, which works like a "week of creatures," although, in my opinion, it's better to use a "custom" spawner for more flexible settings.
2. Create zones near the cities, each with 8 cells (or however many hero units a player can have), and cover them with triggers, such as Player_1_save_zone, Player_2_save_zone, etc. Block the triggers for all players except those for whom they are intended. Record the coordinates of all 8 cells from each trigger in a table or use if/elseif statements. In the same script that I mentioned in the first answer, in the same function, there is code that checks if the desired cell is occupied (look for mentions of badpos). You can use it to check which cell to place the heroes on if one of them is already occupied (otherwise, the heroes might stack on top of each other, which is not good), or you can choose to spawn in a random point within the trigger area, also setting the condition that the point should not already be occupied. Then, as usual, write a function that will teleport them to these points, checking if the points are occupied. We'll also immediately set a condition that the function will only work if a certain day has arrived, and then at the bottom of the script, we'll add a NewDayTrigger, which will try to run the function daily. If you want, you can add a random selection of available coordinates, but in your case, I think this is an unnecessary headache; just have them teleport to the points in the list.
3. As far as I remember, buildings and buffs cannot be teleported, so it's easier to use SetObjectEnabled to false on the desired objects until a certain time, triggering a message when touched, such as "We are closed until next month. All the worst to you, may your legions be overwhelmed by 1 peasant!", and then when the time comes, switch it to true, and the building will work as usual. And so on.
4.
1) Yes, of course. You can do this using if/elseif statements based on conditions, or by using random selection, but then it's better to name the quests the same, just numbering them, for example, quest1, quest2, etc. Then, count how many quests there are, randomly select one of them (setting the condition that the quest should not already be given or something like that), and that's it.
2) In the quests, set the CanUncomplete string to true, and you can reissue them as many times as you want. However, failed quests cannot be reissued, so if you need to reissue a quest but allow it to fail, it's better to just hide it, displaying a message with the sound of a failed quest that the quest has failed.
3) Well, yes. This can be done; it's a basic part of quests. In point 2), I've already given a hint about the possibility of issuing quests repeatedly as many times as you want, as long as they are not failed.
4) I don't know if this will work in Multiplayer; I don't use Multiplayer and don't know what works and how there. But again, failed quests cannot be reissued, so a possible way to bypass this system, I suggested in the previously mentioned point 2).
5. Everything you see in custom maps with combat scripts is the maximum that can be achieved there. Combat scripts are a rather limited part of the game; there isn't much room for creativity. Controlling creatures, heroes, making them play animations, casting spells, playing or winning, spawning creatures from one side or another, and displaying messages – these are all the things that can be done in a combat script.