If we decid to estimate tasks, let's do it efficiently, with the least amount of wasted time. By default, teams estimate tasks on the common sprint planning. However, I have never seen this work well. Perhaps this approach is suitable for very small highly specialized teams, where each member is closely involved in all tasks. But if we work on several parallel projects, every one of which is done by the part of the team (as it usually happens), then estimations on the common planning are a waste of time in my opinion.
In order to estimate a task you need to talk it through in detail. To talk through all tasks for the sprint for 10 people you need several hours. Not everyone present participates in the discussion of each task, the rest sit and yawn. Time is wasted, you still can't go into details, the estimates are far from reality.
At Nautal, we went through the usual planning with Scrum Poker
and realized it wasn't right for us. As a result, we agreed to small grooming or working sessions with developers who were going to participate in feature development + PM + tech lead. We discussed the feature in detail, dwelled on the difficult moments, and roughly estimated it. After that, the task went to final polishing and prioritization.