Is it possible to have an entity with fields, which doesn't use bundles? I have an entity (using entity API) for which I would like a fixed number of fields (and would prefer to use fields and the API rather than just creating properties) - it makes no sense to make a bundle - but do I need to create a bundle nonetheless to allow fields to be attached?

I'm thinking this is the case since field_attach_instance takes a 'bundle' value in the array to pass in (and field_config_instance contains the bundle column).
Technically, yes! For each entity type you must have a bundle. 
Since bundle is the implementation of entity type. If you define your entity type without a bundle the bundle will be of the same name with entity types. For example user entity doesn't have a separate bundle so it uses the default one with the same name of entity type. 

Please go through this and this for details.