Whether you use it or not, InnoDB always has a primary key, kind of. InnoDB uses a clustered index for storing the data, which basically means that primary key and the data are in the same place. If you don't define a suitable index, it creates an internal index. This also means that the primary key is "free"; it doesn't require any extra space since the data is stored in the index. If you always find rows to update by using both columns, you should definitely make a composite primary index. Even if you don't use two columns every time to filter data, you will probably benefit from a composite primary index.
As for the data types, I'd make both as small as possible. I'm not sure about the specifics of how the index is handled in memory, but you're probably not going to be able to measure any significant difference due to memory access differences and the smaller index size wouldn't hurt.