Hello and welcome to the forums,
I'm assuming the programmer is already using the Utils/GenericBrowser module as well as object "Row" generated with GenericBrowser, the one that has add_action() method. This is the preferred way of adding actions to the table.
Now to the matter at hand. The proper href for making such action is created through the method:
Utils_RecordBrowserCommon::create_record_href($record_type, $record_id,'edit')
where $record_type is RecordSet name (like 'contact') and $record_id is the exact ID of the record.
Bringing these two methods together we get:
$gb_row->add_action(Utils_RecordBrowserCommon::create_record_href($record_type, $record_id,'edit'),'Edit');
And that alone should create the "Edit" buttons in the actions column of the table.
Please note that when creating the href permissions are not checked and only when clicking the action, the user will be directed to page noting that permissions are not sufficient. This can be checked with Utils_RecordBrowserCommon::get_access('contact', 'edit', $record);, returning true or false.
Hope this helps!
Arek
EDIT: And to answer the question about accessing the records in general, the recommended way is to use Utils_RecordBrowserCommon::record_link_open_tag() and Utils_RecordBrowserCommon::record_link_close_tag() methods, for instance:
return Utils_RecordBrowserCommon::record_link_open_tag('contact', $record['id']).$label.Utils_RecordBrowserCommon::record_link_close_tag();
or alternatively, if the label is exactly one of the fields:
return Utils_RecordBrowserCommon::create_linked_label_r('company', 'Company Name', $record_id, $nolink);
Where $nolink is boolean variable, false by default, usually passed as one of the arguments to any display_callback.