game will do an alert if it can't find at least one instance in layout, so yes, you must have at least one instance of every sprite created NOT by events. I think a quite good solution would be to create a layout with all game sprites, and never go to that layout if you cannot bare having instances outside standard layouts and destroying them on start :)
as for onCreated - well create object event triggers on created - that's obvious. already created objects are not created during the game, they are there from the beginning - that's why the oncreated doesnt trigger I think.
hope that helps
Yes, I use the same technique placing all objects in an unused layout.
As for onCreated; technically the instance of the object must be created when that layout loads the objects you placed in the designer.
Anyway, I've just joined the onCreated and layoutStart events with an 'or' as that seemed like the most elegant solution.