Theming
Theming is one of those parts that are quite hard to get right. I recommend reading up a bit more about the documentation. But generally, there are tons of different approaches. The most important part here is that it's possible for you to have the code related to themes in one place. As soon as you are setting specific colors etc throughout the app it will be a headache to implement light/dark mode features.
ColorScheme
This is a great way of making sure the app uses the theme color in all those small spaces you might forget. Looking at the documentation:
A set of thirteen colors that can be used to configure the color properties of most components.
This refers to a lot of widgets use for example "themeColor[400]", and the color scheme just makes it easy to cover those cases. The documentation on ThemeData is great so I recommend it a read!