Well actually, your first example works perfectly as intended, due to how events work.
I invite you to also check back for anything under the section "Picking" in the How do I FAQ (linked in my previous post).
When you create an object, only the newly created instance is picked. So Sprite.PickedCount is 1.
It's hard to see what you're exactly trying to achieve with a single screenshot. I'm assuming you're having several instances of Sprite in the layout, and that's why you would expect Sprite.PickedCount to be superior to 1.
For it to work, you would have to make sure to have the function executing on a new tick, and especially picking all the available Sprite instances.
Or instead actually use the Sprite.Count property that will return the number of existing instances of the object type.
Your second example is just overdoing.
On "start of layout" only happen once, on start of the layout.
The Sprite actions "Set effect "SetColor"" apply to the newly instance made with the Create action.
So in the first example, you see the newly instance getting its new color. And if it is not the color you're expecting, maybe it's because you're assigning the parameter 0 of the color twice, instead of a parameter 2.
Finally if what you're looking for is "just" applying "SetColor" parameter to a newly created instance, just make a function
System: Create Sprite on layer Function.parameter(0) at (Function.parameter(1), Function.parameter(2))
Sprite: Set effect "SetColor" parameter 0 to Function.parameter(3)
Sprite: Set effect "SetColor" parameter 1 to Function.parameter(4)
Sprite: Set effect "SetColor" parameter 2 to Function.parameter(5)
On start of layout
Function: Call Function "CreateSprite", 0, 200, 100, 0, 255, 0
And here you have it. See the attached capx to have a working example.
All actions referring to an object type placed in the same event and under a Create this object type action will apply to the newly created instance.