Puh lots of questions here 🙂
At first all of your requested features does already exist.
created on: you would create an 'date + time' attribute on your relation and set the default value to 'Current date + time'
created by: you have multiple ways to achieve this, the most easy one is to have a relation between your relation (e.g. asset) and your contact relation which your logins are linked to. Then you would create a filter on form level to the contact relation input to select the contact where the login attribute = login id and the record is new, also select auto select and set this field permanently to read only

changed by and last update: They both need an trigger function on the backend whenever you do any updates in your relation. So create a backend trigger, link it to your relation (e.g. as a before trigger) and update your relevant fields. For example on the backend you would write a simple function like:
UPDATE {lsw_tickets}.[ticket]
SET (lsw_tickets.ticket.last_changed) = extract(epoch from now())
WHERE NEW.(lsw_tickets.worklog.ticket) = (lsw_tickets.ticket.id);
At the moment there is no option to do a real soft delete via REI3 - however you could work around this.
- Allow 'deletion' only via a dedicated button which will only set a bool (e.g 'is_active') to false and you filter your lists etc also by this attribute.
- You could run a before trigger when you delete an dataset and copy the values to another relation
What do you want to achieve with your roles? I need further information from you.
Hope this will help you.