Blake:
1. Yes, using "OID@" will work for any field name that is identified as an OID type field. So the names FID, OID, OBJECTID, etc. will all work as long as the field is typed as an OID field.
2. (row[0:]) breaks down as follows:
A. (...) creates a tuple (the outside parenthesis define this as a tuple).
B. row[0:] reads the row pulled by the for loop within the list comprehension and iterates the listed fields in the field list parameter of the cursor. row[0:] is the same as saying read all field values starting with the first field (0 based) and continuing to the last field for the current row. The remainder of the list comprehension syntax understands to insert a comma between each field value since it is being comprehended within the tuple container. So the full line is building a dictionary like:
dict = {(1,1):0,(2, 12):0,(3, 13):0,(4, 15):0,(4, 16):0,...};
The duplicate value of 4 in Nummer field is uniquely counted because it is being paired with the ObjectID value in each dictionary key.