matplotlib is a very popular Python plotting library because it provides full control over the plots and produces graphs well-suited for publications. Many plot types can be created.
The downside of having full control is that it has a verbose imperative syntax. It also produces non-interactive plots.
Seaborn is a higher level library built on top of matplotlib. This means that the plots are also non-interactive and that the options are more limited. On the plus side, the declarative syntax is very easy, making it a nice library for exploratory data analysis (EDA).
Bokeh creates interactive plots great for dashboards and web apps. It is more efficient than other libraries for streaming or interactions with large datasets. It does have a fairly steep learning curve.
Plotly also creates interactive plots and its declarative option with the Plotly Express framework makes it very easy to use (the imperative approach is also possible). Static plots however are less sophisticated than with matplotlib and it is not as good as Bokeh for dashboard interactions.