I did more testing this to me looks like some what of normal behavior.

The rows that are inserted into your table from the DBA_VIEWS are only the rows where the ORIGIN_CON_ID = the PDB that you are connected to. What to me is not correct is the select count(*) should also only return the count of rows where the ORIGIN_CON_ID= the PDB but the count returns all rows from all CON_ID.

I tested creating the same table with my common user but connected the the CDB root and I was able to insert all rows from DBA_VIEWS.

In 12cR1, there are common objects and there are local objects. The definition of a common object is stored in ROOT, and only a stub for the object is stored in PDB. The definition of a local object is stored in PDB.

When DBA_VIEWS is queried in a PDB, then we must return rows for both local and common views as the result of the query. If common views are not returned, then several views that a customer is used to seeing in the result of a DBA_VIEWS query in 11.2 and earlier will not be seen in 12.1. For example, ALL_TABLES, DBA_OBJECTS, etc.

When DBA_VIEWS is queried in a PDB, then we retrieve the rows for local views from PDB and the rows for common views from ROOT. The former have ORIGIN_CON_ID value equal to the Container ID of the PDB to which you are connected and the latter have ORIGIN_CON_ID value equal to the Container ID of ROOT. Since the retrieval of these rows has to be done in two different containers, we go through a fixed table X$COMVW$*.

The discrepancy you encounter is because this fixed table based evaluation is used only for SELECT, and not for INSERT AS SELECT, CREATE TABLE AS SELECT, etc.