Hi,
Can you clarify a bit what you're trying to do?
Are the children and grandchildren supposed to be Actors? What's a Node?
Generally speaking, if you want actor1 to be actor2's parent, then actor1 has to be the one creating actor2. Even then, all actor1 will have is an ActorRef, not a reference to the actual actor. This is an important distinction, because it means there is no way to call a "getChildren" method on a child actor to obtain the grandchildren. Instead, you would have to send a message to that child, and wait for it to respond.
To try and answer your specific questions:
1. There is no built-in way of telling when an actor is initialized (and, by extension, when a group of actors is initialized). In most cases, this shouldn't matter to you - once you call context.actorOf and obtain an ActorRef you can start using it (sending it messages) without having to wait. Once the actor is initialized, it'll start handling those messages.
2. You can either save them (in a Map, List, whatever) or use context.getChildren. Again, though, note that these are ActorRefs and not the actual actor objects.
3. This is easier - since no one has access to an actor's state, you can change it freely as long as you're in the actor's receive method (or it's somewhere in your call-stack). You have to be careful with callbacks, futures, etc. that run on different threads, though.
HTH,
Tal