So I need a way to make slightly random buildings appear (different roof combinations, etc.) and with certain boundaries on where they spawn (not more than X units away from Building A)
This is not for a background, so it needs collision.
I agree with Atnas. Your best bet would be creating the buildings and roofs as seperate models in a modeling program like 3ds Max (which you can get a free 30-day trial of), importing them into your Unity project, then using scripts to randomly select and spawn said models.
A very simple solution might be to use a jittered grid for spawning buildings, especially if they are roughly the same size. See this link for information:
Here is some more information on procedural city generation which might find helpful. (It might be overkill for what you are trying, but the ideas are interesting and you could probably simplify or adapt it for your needs):