An app engine Key can have EITHER a unique long ID, or a unique String name - they are mutually exclusive. If you set a long ID, the name will be null. Which you decide to use for any Entity kind really depends on your use case.
A benefit of using long IDs is that you can have app engine auto-generate them for you. That is, you can create your Entity without any value for its ID, and then when you save it it will be given a valid unique long ID by the datastore.
If you use a String name, you must create the unique name before the Entity is saved. This is useful in some cases if you have some property on the Entity that makes for a natural fit for the unique name (for example, and SKU for a part). Also, some people generate a random UUID for the String name - this ensures that all names are globally unique, not just unique among a particular Entity kind and ancestor path.