Changing component at Runtime

Yes you can use a component variable, and add/remove components at runtime, re-assigning the variable (provided it has BlueprintReadWrite if done in BP).

Just make sure whenever you call functions on that component you use the variable and not the default component reference in blueprints.