How do I build the node title from field values when saving the node?
Could be a job for Automatic Entity Label. Actually I'm using it that way – in production (though it has no stable release yet it works just fine).


  "Automatic Entity Label" is a small and efficient module that allows
  hiding of entity label fields. To prevent empty labels it can be
  configured to generate the label automatically by a given pattern.


You can define tokens from which the title will be built. An you can optionally set the title field to be always hidden on the node form. I'd also recommend to make the fields mandatory (required) that you use to build the title.