For draw order use the zPosition property of a node:
zPosition The height of the node relative to its parent.
The default value is
0.0. The positive z axis is projected toward the viewer so that nodes with larger z values are closer to the viewer. When a node tree is
rendered, the height of each node (in absolute coordinates) is
calculated and then all nodes in the tree are rendered from smallest z
value to largest z value. If multiple nodes share the same z position,
those nodes are sorted so that parent nodes are drawn before their
children, and siblings are rendered in the order that they appear in
their parent’s children array. Hit-testing is processed in the
opposite order.
The SKView class’s ignoresSiblingOrder property controls whether node
sorting is enabled for nodes at the same z position.
You can also use insertChild:atIndex: to affect z order but keep in mind that index is the index of the object in the array, not it's zPosition (ie atIndex parameter is not the same as the z parameter in cocos2d, in fact it's the inverse). Nodes added at a lower index will be drawn before nodes at a higher index.
Also note that you can't insert nodes at an index out of bounds. From the NSMutableArray docs:
[..] you cannot insert an object at an index greater than the
current count of an array. For example, if an array contains two
objects, its size is 2, so you can add objects at indices 0, 1, or 2.
Index 3 is illegal and out of bounds; if you try to add an object at
index 3 (when the size of the array is 2), NSMutableArray raises an
exception.