Q:

What is the best way to maintain several formatting conventions for C files in vim? 

For example https://www.ffmpeg.org/developer.html#Editor-configuration requires specific set of rules, but for my projects I usually prefer different one. 
It would be great to have several named groups of formatting options for different projects and switching between them easily without modifying .vimrc

A:

Vim does not have a concept of project so it has no native way to do such a thing.  But don't let that get you down.  We can still accomplish such a goal. 
set exrc
set exrc

This enables the reading of .vimrc, .exrc and .gvimrc in the current directory.  However this means you must open vim with the correct current working directory and opening another project in the same vim instance will not switch your settings.  See :h 'exrc' for more information. 
Roll your own autocommands
Vim's autocommands are basically event handlers.  You can handle an event like opening a buffer from a specific directory and run a command, like sourcing some config settings. 
augroup ProjectSettings
  autocmd! 
  autocmd BufRead /project1/* source ~/.vim/project1_settings.vim
  autocmd BufRead /project2/* source ~/.vim/project2_settings.vim
augroup END

As long as your settings files use buffer local setting commands like setlocal and mappings/abbreviations with the <buffer> option, your settings will be applied to just the buffers in your project. 
I believe one (maybe?)  of Derek Wyatt's vim videos show a similar method to this. 
See the following for more information:
:h :au
:h BufRead
:h :so
:h :setl
:h <buffer>

Plugins
Sometimes it is just easier to use someone else solutions.  There are a few local vimrc plugins out there that help give you local settings:

localvimrc
localrc.vim
vim-addon-local-vimrc

Another nice plugin option may be using Tim Pope's vim-sleuth which heuristically changes indent setting based on the file or in the case of blank/new files other files of the same type. 
If project navigation is up your alley then I would suggest you look at Tim Pope's projectionist plugin or a nice fuzzy finder. 
Conclusion
There are many options to explore here and no real right answer.  I personally suggest using the plugin approach as it the easiest.  However I feel obligated to tell you I use Projectionist and a custom project plugin for my projects at work so I am biased.