price() returns the mean price of a candle. In general, it will reduce the effect of outlying or random ticks and result in a more stable system. In general, you should use price() wherever possible.

Some systems however will require the high, low or close by their nature. For example, a Donchian channel based system would need to use the highs and lows.

So the short answer is....it depends on your system. You can always try different methods and compare the results to see the effects on an individual system.