There are 2 different syntaxes. Declarative is the pipeline{} style. scripted doesn't necessarily start with node{}, but uses that heavily.
Scripted syntax is basically a straight groovy code DSL. Use it when you need to do more complex and interesting things and aren't afraid to get down into writing code.
Declarative syntax is a more friendly and easy-to-learn syntax. It can be intermingled with scripted in many ways, so I usually like to start with a declarative pipeline and as things start to get more complex where I have had to use too many script{} block or other straight groovy, then I'll consider scraping the declarative framework and converting to a straight groovy script.