Doing multi-city actually wouldn't be a HUGE extension of the existing code - as far as the game is concerned a location is just a thing independent of any organizational structure and how they're arranged is more for the convenience of the player than a hard requirement. You'd basically just need to add another layer to the hierarchy where you have a "Country" entity that holds a list of "City" entities and then up date the UI to reflect that. The biggest change would probably just be in the logic that loads the city definition from the xml files. Some logical changes would probably be needed in a few methods like when someone gets arrested or sent to the hospital - right now those assume that only one of the relevant location exists (they would technically still work in that they would send them to a location of that type - but it might not be the local one). I'll look into adding support for this but I've been taking a bit of a break from anything too major on this so I don't want to make any promises.
For the class you've mentioned, any class that extends MonoBehaviour is a Unity object and works through the Unity editor's interface rather than the code itself. For that specific example, it's a script used on a prefab (called "LawAlignment", stored in the Assets/Prefabs/Base Screen folder). None of those variables are set in code and it isn't created through a constructor the same way you'd be used to - rather in the Unity editor all of those fields are set in the hierarchy or on the prefab definition (a prefab is basically just a specific saved copy of a hierarchy object that you can freely duplicate either in the editor or at runtime), and it gets instantiated by setting a reference to the prefab on another object (In this case, it's an object in the hierarchy itself, under Main Camera -> Canvas -> Base Screen -> Liberal Agenda, and the LiberalAgendaImpl script on that object), and then calling Instantiate in the code with that reference as input.
For this kind of stuff you're probably going to want to familiarize yourself with how Unity structures things in general, since that's where all the UI logic lives. Unity does things in a way that's slightly different than how you'd expect to handle them in code, and basically requires using the editor interface to do a lot of stuff. To give an example of how you'd do the thing you asked, what you could do is copy the Liberal Agenda object from under the Base Screen object in the hierarchy and paste it as a child of the Site Screen object. In this copy you'd want to remove any of the UI elements that you won't want accessible on the Base Screen (Like maybe the poll or map buttons), and rearrange anything that doesn't fit in nicely with the Site interface. Since this is all just layout on a copy, there's no code changes needed and nothing will be affected on the original agenda screen. Once you've got the UI arranged how you want in the hierarchy, you'd just need to modify the SiteScreenController to give it a "public LiberalAgendaImpl LiberalAgendaView;" variable to set in the editor with a reference to the screen you just added, then add a method that will call the "show()" method of that object and hide any elements you don't want displayed while it's there, and then add a button on the Site Screen UI that will call that method.