Please don’t get the impression that objects just hang around after being deleted. They are deleted right away. The problem is, references to them are not.
You can get into trouble if you delete an object that will be touched later in the same frame.
Let me give you a ‘for example’
-
A new frame starts.
-
Phase A executes and a number of collision listeners are queued for ‘handling’.
-
Phase B begins and as the listeners are called, one after the other, a listener deletes a display object X.
-
Phase B continues and later another listener is processed, but this listener tries to do something with object X.
At this point, if you don’t have safety code in place, the app will crash or at least complain loudly. 
Question
What is the table of objects for?
If you are keeping objects in a table and iterating over that table, but don’t care about order, then you’re better off doing this:
local myStuff = {} local function finalize( self ) myStuff[self] = nil end local first for i = 1, 10 do local ball = display.newCircle( 10, 10, 10 ) myStuff[ball] = ball first = first or ball -- grab reference to first ball for example end display.remove(first) -- 'finalize' automatically called and reference to ball removed from table. for k,v in pairs(myStuff) do v.x = v.x + 10 end