Implicit Wait: It is set for the entire duration of the webDriver object. Suppose , we want to wait for a certain duration, let's say 10 seconds before each element or a lot of elements on the webpage load. Now, you wouldn't want to write the same code again and again. Hence, implicit wait.
Statement in Selenium for Implicit wait:
Driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
Explicit wait: It is an intelligent waits that are confined to a particular web element. Using explicit waits you are basically telling WebDriver at the max it is to wait for X units of time before timedout.
Statement in Selenium for Explicit Wait:
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("someid")));
Thanks,
Sanjay