The only way that I can think of to see exactly what is being used by each project is by directly querying the data in the database & not in the P6 application.
The Following SQL gives the correct results when testing in a SQLite database:
SELECT DISTINCT
PROJECT.PROJ_SHORT_NAME AS 'Project Code',
UDFTYPE.UDF_TYPE_LABEL AS 'UDF Type',
COUNT(UDFVALUE.FK_ID) AS 'Number of Assignments'
FROM
UDFVALUE
INNER JOIN
UDFTYPE ON UDFVALUE.UDF_TYPE_ID = UDFTYPE.UDF_TYPE_ID
INNER JOIN
PROJECT ON UDFVALUE.PROJ_ID = PROJECT.PROJ_ID
GROUP BY
PROJECT.PROJ_SHORT_NAME,
UDFTYPE.UDF_TYPE_LABEL
This should give you a list of the Projects in the Database that have UDF's assigned to them, the Name of the UDF as given in the P6 Application List along with the number of times that UDF has been assigned per project.
Please note that this is not all of the UDF's & will only show the number of UDF's assigned to each project. There are a number of different UDF's all saved into this table that are not based on a Project (Resources UDF's etc).
Unfortunately you cannot easily backup just the UDF's, as the remaining project data may change over time - best option would be to archive the entire project in either XER or XML format & save these files outside the database so that they could be fully restored if required at a later date.
Please note that this has been tested against the P6 SQLite Database only - check with your Database admin before running.
Hope this helps.
Steven