I suspect you are a bit confused on how the scene system works, if you can read again about scenes and instancing on docs and/or some of the recommended tutorials you can find around here or on reddit before continuing; you are almost there but seems you are missing in some part of the scene/node system.
For the questions:
Look at the remote inspector to see the scene structure and where the nodes are being added.
A node can have one parent only (is a tree structure), if says powerUpSprite is already parented is because was already added to the tree.
I see that powerUpSprite is on an instance variable, you can't add the same Node instance twice to the tree.
Also, the last line is setting the sprite's local position (relative to the area parent) far from local zero.
You are creating all the stuff by code, are you sure you don't want to use the engine features to create a scene and just change some properties after instancing it?
The power up scene could be (like demo and docs examples)
-Area2D (script)
|-Sprite
|-CollisionShape2D (only if shape won't change, until you know what it means)
Instance the PackedScene, then add the powerup scene instance to the tree.
The scene instance could take care itself about the random variables, on _init
and/or _ready
and/or _enter_tree
, also add the shape and texture it needs.
You can add a spritesheet for the sprite and change the powerup image by changing the frames too.
Some people even use:
-Area2D (script)
|-sprite-powerup1 (hidden)
|-sprite-powerup2 (hidden)
|-sprite-powerup3 (hidden)
|-sprite-powerup4 (hidden)
Useful if spritesheet is not an option for X reason.
Then just show the sprite for the active powerup mode on ready, all the resources are loaded once so there is almost no waste of resources no matter how many times you instance it.