Hello back,
I'll give this a go.
1. Kong does not have the concept of "user", it only has "consumers", which can be either: A user or an application or whatever. It's what you define it to do. That's the level you you work on. Kong doesn't care at all whether a consumer is semantically a person or a role. It needs a consumer. Period.
2. This question you would have to rephrase, as it's not clear what you are trying to achieve. See above: If you don't need granular access levels or specific roles, and just need an "organization", then define a consumer which corresponds to this organization. If I got this completely wrong, please clarify what you are trying to do.
3. Two possibilities I can think of right now (there are probably a lot more):
a) Split your API into a "reading" API and a "writing" API, which would need to have separate resource level end points (/yourapi/read and /yourapi/write). This is not very clean, but it would definitely prevent your consumers to actually hit the backend service at all
b) Use two ACL groups for your API. One "read" and one "readwrite" group (or similar, you are free to chose). Then assign your consumers to the appropriate ACL group; Kong will forward the groups a consumer belongs to in a X-Consumer-Groups custom header you then could leverage to decide whether an operation is allowed or not. This would have to be done in your backend though. It still gives you the benefit that you don't have to hard wire any consumer in the backend service, but just decide based on groups which rights a consumer has. This in fact is a rudimentary RBAC concept using ACLs.
4. You are free to associate any consumer with any API by the means of ACLs. Read up on how that works, I think that will help you.
Best regards,
Martin