Oracle stored data in blocks , blocks are usually 8k in size , you can change this , but it’s best to leave this as the default size. Blocks make up extents and extents make up segments which is the primary unit while working with partitions and tables.
Blocks consider headers and as expected is located at the start of the block and row data which starts at the bottom and works its way back up.
PCTFREE is associated with how much of the space in the block can be used before it is considered full. its purpose is to reserve free space for future updates to the row. This ensures that there is no row migration when updates happen.
ROWID defines how the database has to look up a row, it consists of the data object number