Normally, when many rows in a page are lock, SQL Server escalates to a page lock, which is more efficient than many locks on the individual rows, but can have the side effect of keeping locked some rows within the same page that would otherwise not have been locked. Similarly, when many pages in a table are locked, SQL server can escalate to a full table lock.
ROWLOCK forces the locks to be taken only on rows. That is, it prevents the locks to be escalated to pages or table. By itself, ROWLOCK does not cause anything to be locked, and it does not control when the locks are released. The effect is that if anything has to be locked (for other reasons unrelated to the presence of the ROWLOCK hint) then these locks will be kept at row level and not escalated to a higher level.