How to build a reusable configurable form
In a custom module, use the FormAPI to build your form and create variables to store your #options for example (in the case you mentioned of select lists that change). Set the variable according to the context and you should be good to go.

/**
 * Implements hook_form();
 */
function mymodule_form($form, &amp;$form_state) {

  // For inspecting information about entity and id:
  kpr(arg(0));
  kpr(arg(1));

  $form['selected'] = array(
    '#type' =&gt; 'select',
    '#title' =&gt; t('Selected'),
    '#options' =&gt; $variable_according_to_context,
    '#default_value' =&gt; $category['selected'],
    '#description' =&gt; t('Varies according to context.'),
  return $form;
}


The $variable_according_to_context will hold the options of your select list. You can set this variable to different options according to the context you are in. You can use arg(0) or arg(1) to get the node or entity type the form is in. I hope that was clear enough on how I would approach this.