You are almost correct buddy but I will tell you how it works.
While in concurrent mode a render can be discarded if the component state changes before the render is committed to the DOM. The main purpose is optimization (makes sense right, why have unnecessary updates).
Now the use useEffect hook runs only after the component is committed to the DOM. It runs after the render cycle is completed, which means all updates to the DOM are finalized. Since this is the case useEffect will not run for discarded renders. if a render is discarded, any effects associated with that render will not execute too.
Hope this answer helps you