I link some of the best practices on content models (this tutorial by Jeff is actually one of the best resources available on content models):
Working With Custom Content Types in Alfresco | ECMArchitect | Alfresco Developer Tutorials
Regarding to other questions, I will try some guidelines:
How do I apply the evolutions of my custom model on my "production" server ?
> Bootstrap content models (via AMPs or JAR files) are the recommended ways, using incremental changes on your existing models (for example using aspects). You have to take account that only incremental changes are allowed when updating content models. If you try to do something non incremental, the model will not be updated (so the old model will be registered). In that case you should see the corresponding warnings in SOLR logs. You can use Dictionary Service (in the above links) or via CMIS Workbench for checking the current version of your content model. Under SOLR directories you can also find cached the alfresco content models definitions.
Do I just get amps files from maven and deploy them ?
Should I desinstall my first amps before deploying the new ones ?
What about the content which use the "old" custom model ?
> If you are adding new aspects or properties in your content model update, you should add the corresponding new metadata via CMIS or JS API.
Should I full reindex ?
> This is not really necessary.
Why can I not see my custom model from amps in the model manager ?
> You will only see those models imported or created via Alfresco Share, you can not see a AMP-based content model.