What is the format for object names in Blender and are there any limitations?
Any ID name (objects, but also materials, textures, etc.) are limited to 63 bytes - since they are encoded with utf-8, it means 63 chars for basic latin alphabet, but any special character (fancy diacritics, non-latin alphabets) will use two bytes or more.

So to answer your specific points:


No, you can use any char you want.
At best, your name can be 63 char length, less if you use fancy chars.
No, each name must be unique in a given ID type (i.e. if you have a Cube object and try to name another one the same, it will be automatically changed to Cube.001). However, you may have e.g. a material, object and texture with the same names.