Just curious, what does Unity do when you pass the second parameter (time) into a Destroy call?
I know it destroys the object after that time delay.
What I mean is: Internally, what does Unity do with it? Example: Does it add a Coroutine with a destroy call after a wait? Does it add the object to some internal list marked for Destroy in x seconds?
Just curious 
Thanks.
I dunno, and it might change with versions of Unity.
If you really care, you could probably devise an experiment to determine what is really going on but counting objects, etc.
It does this:
/// <summary>
/// <para>Removes a gameobject, component or asset.</para>
/// </summary>
/// <param name="obj">The object to destroy.</param>
/// <param name="t">The optional amount of time to delay before destroying the object.</param>
[FreeFunction("Scripting::smile:estroyObjectFromScripting")]
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern void Destroy(Object obj, [DefaultValue("0.0F")] float t);
So, as you can see that is executed on the native side, and there’s no way to tell what’s going on internally for us, mortal indie developers.