I think you have an incorrect understanding of the term instance. Take C#, C++ or Java for example. When you write the code for a class, you basically define a type. When you call the constructor of that class you create an instance of that type.
In Blueprint, it’s the same. You create your blueprint class and thus define a type. Now when you spawn that type anywhere in your world (or drag it into your viewport), you create an instance of it.
That being said and from what I understand about what you want to do:
Every station has a name, no matter what type of station it is and every station belongs to a faction, no matter what type of station it is. That means, those variables (name and faction) belong into your baseStation class.
Now, let’s say you have a station type MiningStation. And that station needs a variable which specifies how much minerals it mines per day. So that variable belongs in your MiningStation class, because some other station type (for example ResearchStation) doesn’t need a MineralsPerDay variable.
Now, when you create an instance of your MiningStation, that instance will have a Name, Faction and MineralsPerDay variable, because it inherits Name and Faction from the BaseStation class and gets the MineralsPerDay parameter from it’s derived implementation.
When you create a second station type ResearchStation, you might want variables like ResearchPerDay, ChanceForResearchAccident - so you define those in your ResearchStation child class.
When you create an instance of that ResearchStation type, that instance will now have Name and Faction (inherited from base class) and ResearchPerDay and ChanceForResearchAccident, but no MineralsPerDay - because that’s defined in a different child class.