Dumb components are components that don't interact with state. All they do is receive props and call functions passed down by props.
Smart components are components that do interact with state. They change state by dispatching actions and directly access the state for retrieving data.
It's important to keep the amount of smart component to the minimum, because dumb components are much easier to test as they don't contain any 'side effects'. To clarify, smart components can contain HTML and styles. They simply act as normal components.