The ulat and ulon arrays contain a subset of the values in the lat and lon arrays, i.e., just the unique values. For example if the columns in a chunk all have the same latitude, then ulat would just contain that one value while lat would have that value duplicated for each column.
The ulat/ulon arrays are only used in the boundarydata module which interpolates from input datasets to the model grid. They are just for efficiency in the calculations.
The grids used by CAM are determined by the dycore. They may be different for the dynamics and the physics, but all grids are set by the dycore.