Great for static content. Not great (yet!) for dynamic content, or massive repositories of data (like Wordpress DBs with 1000s of posts). However, Gatsby v2 is currently working on lowering the build time for larger projects.
It's a lot easier to create a custom Gatsby theme, as well as customize and manipulate data sources.
Gatsby makes it easy to take any data source and plug it into GraphQL, and work from that layer. Instead of pulling from 5 different APIs every time you need something, you can just query GraphQL for everything. And it loads all your data on build, so you don't have to stress the API on each page load.
If you don't want to fuss with the GraphQL data layer -- or a more complex use case -- I'd recommend something like NextJS.
Gatsby takes time to setup, and it can be fussy in production because of GraphQL. If data is missing, the site won't build properly. I had to debug an issue on my personal Gatsby site where I incorrectly formatted a date in my Markdown (09-09-2018 vs 09-9-2018 🤯) and GraphQL wouldn't recognize it -- crashing my entire build process.
If you use Gatsby, I'd highly recommend using a CMS to manage any user-inputted data.
Regardless though, I've loved my experience with Gatsby. It makes it much easier to create lightning fast static websites. Every site feels incredibly fast, with almost instantaneous page loads in some cases (thanks to all the preloading and PRPL pattern magic under the hood).