(Using Blender 3.6.5)
To save your time, notice that similar questions were already posted with detailed answers. Here are some well documented resources:
(1) Why is there a red line when I try to connect one node to another?
(2) Why can't the radius of an Icosphere be set depending on position with geometry nodes [SOLVED]
(3) How can I instantiate a procedural node group with different parameters?
Exploring different approaches to answer J.A.'s question Is it possible to have an equivalent of Array modifier with decreasing count?, and after reading Markus von Broady's answer based on extrusion, I played with the idea of preparing different floors for the tower then of stacking these with an Instance on Points node, instead of stacking the same floor (a circle), then of changing the shape (i.e. the number of bricks per circle). To do so, I planned to use the Pick Instance socket.
It works fine with a static collection made using a Geometry to Instance node connected to pre-made shapes (see the top of the GN graph in the figure).
But I am failing in creating shapes using a function based on the vertices index (see the middle part of the GN graph in the figure). The value downstream of the Sample Index node is correct in a Viewer node, but there is an error connecting it as input to the Mesh Circle node. I am suspecting that along the data path of this branch, there is a conflict between the geometry requirements flowing backward from the Instance socket, and the geometry information flowing forward from the Mesh Line node.
Am I trying to do something that is orthogonal to GN philosophy ? Or am I missing something ?