How to find the all positions of first element and get the elements at once from the nested list?
Thread[Extract[expr, #] -> #] & Position[expr, _Symbol, Heads -> False]
{plus -> {1}, minus -> {2, 1}, times -> {3, 1}}
expr[[Position[expr, {minus, __}][[1, 1]]]]
{minus, 2, 3}
Also
First@Cases[{minus, __}]@expr
{minus, 2, 3}
For the second question:
expr[[Sequence @@ Most @@ Position[expr, minus]]]
{minus, 2, 3}