The limitation of computational power controls the number of positions you can evaluate in a given time. In principle heuristics are only necessary when you don’t have time to search all the positions, so if computers get sufficiently powerful we can forget about efficiency. However in practice the mid game does fan out quite rapidly, so you want to put the computational effort into something that is more likely to be useful… the purpose of the heuristic is to decide when to cut a branch of the tree and search elsewhere (i.e. when it looks like one side or the other is never going to choose this branch). Cutting a branch early saves a huge amount of searching, and yes the heuristic can be wrong so humans are able to beat computers by hiding a good move behind a bad move (but you have to be pretty strong to be able to do that).