Any big-enough system will naturally have some OO-ish parts, just because it has some of almost everything. Most small programs will have none.
They're techniques after all, models, tools.
I have worked on template-heavy codebases that would really benefit from concepts, though.
That plus structured bindings return types. :)
The new features are added specifically because they enable writing better programs. Avoiding them means you are choosing not to write better programs. It is allowed, but not a thing to brag about.
That does not mean every program has to use every feature. But when there is a choice between the new way and the old way to do something, the new way is very probably better.
Passing a reference, where you can, is better than passing a pointer. Passing a lambda is better than passing a function pointer. New for-loops are better than old for-loops. A unique_ptr is a better member than a naked pointer. A compiler-generated destructor is better than a hand-coded one.
And so on.
C is the language that invites in mistakes. The less C we code, the fewer mistakes we ship.