Exceptions in software development need to be carefully considered and handled appropriately. There are two main types of exceptions: unchecked exceptions which represent programming errors and should be prevented, and checked exceptions which represent errors outside the program's control and should be caught and handled or propagated gracefully. Best practices for exceptions include thorough testing of error scenarios, logging exceptions for support, and designing user interfaces to handle exceptions sensibly.