The main problem with your setup is, that you try to change the object, that shall be instantiated. The Instance on Points node will normally generate multiple instances of exactly one identical object. You cannot change the object before instantiation. Instead, you may scale, rotate or translate the instances afterwards or you may realize the instances and modify the resulting geometry.
You have the option to provide a collection of elements, so that the Instance on Points node will choose one of these instances for every instantiation by choosing Pick Instance. But the principle is the same here: If you instantiate one element of this collection multiple times, every of these instances will be the instance of exactly the same object. And you may change it afterwards following the same rules as mentioned above.
Following you will find a solution to your questions. I won’t describe everything in detail, because many of the concepts, that I used, are explained in this video from Erindale. Instead, I will focus on your two questions.
This is the complete solution:
Here you find an overview, that I will explain below:
At (1) the lines for the trunks are generated. They are scaled randomly in length on instantiation. Next the instances are realized, so that they can be modified in (2). Every trunk gets modified individually. This gives me the opportunity to capture the radius, when setting it.
Creating the branches works correspondingly. In (3) the lines for the branches are created. Next the instances are realized and in (4) they are modified individually.
Coming back to your questions:
- Capturing the radius is shown in my example. But this would not work, if you tried to apply it to the object, that should be instantiated. You have to use it on the realized instances.
- You can only use different seeds after realizing the instances and not on the object, that should be instantiated, because it is only one object, that can only have one seed.
And here you can see the result: