Hii @there,
First of all, id stands for identifier and are unique in a DOM. So, if you select a Web Element by id, you would definitely be able to target the element successfully.
Now xpath is a bit complicated. The general way of finding the xpath ( by using browser inpect element), shows the hierarchy of the element, so in case the DOM element changes in the future, your xpath expression would fail.
NOTE : There are a number of ways to create xpath expressions, which are pretty stale and less dependenct on the hierarchy of the web elements.
Xpath=//tagname[@attribute='value']
Relative xpath: //*[@class='featured-box']//*[text()='Testing']
Such xpaths are pretty stable.As a rule, I will use xpath if a unique ID is not available, and I attempt to write it such that it is generic enough to resist "breakage."
Thanks,