Int is a scalar data type that is part of C. NSNumber is an objective C class that is a subclass of NSValue. NSValue is designed to store non-objective-c classes (ie: pointers, char, int, NSRange (which is a struct), CGSize (struct), CGRect (struct), etc. - see Apple docs for all of the types of data an NSValue object can store).
NSNumber is a specific subclass of NSValue - it's sole purpose is to deal with numeric scalar C data types (ie: int, float, double, etc.).
I can't compare it to C# as I don't know C#.