I have seen both FluentWait and WebDriverWait in code using Selenium. FluentWait uses a Polling Technique i.e. it will be poll every f
In your example wait.until(ExpectedConditions...) will keep looking (every 0.5s) for linkText 'Account' for 18 seconds before timing out.
WebDriverWait is a subclass of FluentWaitFluentWait you have more options to configure, along with maximum wait time, like polling interval, exceptions to ignore etc. Also, in your code, you don't need to wait and then findElement in the next step, you could do:
WebElement element = wait.until(
ExpectedConditions.elementToBeClickable(By.linkText("Account")));