Basically, they are not too different. The difference is in managing your objects: find_element() gives more flexibility, as you can create a
locator = By.XPATH, my_xpath
somewhere and use it as find_element(*locator) in, for example, your tests. You can simply update locator
locator = By.CSS, my_css
and there will be no need in updating your test code as find_element(*locator) is still valid.