Any keys in that array that don't map to column names will be stored as additional object properties, so it doesn't matter that the array contains keys that do not map to columns.
The array may not contain a primary key value.
If save() doesn't save anything, you should get an error message or save() should return false. This may be the case if you try to save an empty object.
If you're input is invalid, the ORM will throw a database exception. If the input is valid from a database point of view, but the INSERT failed, save() will return false. If save() returns true, the INSERT was a success.
If your input contains a PK value, you end up with an object with an invalid state. The ORM will attempt to do an UPDATE instead of an INSERT because the presence of the PK indicates an existing record. The UPDATE will run fine (but with 0 records updated) and save() will return true.
Hence my remark that you may not forge a new object with an array that contains the PK value.
Enable the profiler in your config/config.php, and enable DB profiling in your config/<environment/db.php. And then check what DB queries are executed.