How to iterate over selected_objects collection and ignore the active_object
bpy.context.selected_objects is a collection of references to all selected objects, and will include the active object. 
bpy.context.active_object is a single reference.


There are a number of ways to get a list of selected objects that don't include the active object. The following give a list called selected of selected objects except the active object.

list Comprehension  

ctx = bpy.context
active = ctx.active_object
selected = [o for o in ctx.selected_objects if not (o == active)]
# selected = [o for o in ctx.selected_objects if o != active]

# or even a generator expression.
# selected = (o for o in ctx.selected_objects if o != active)


or

set() boolean  

ctx = bpy.context
active = ctx.active_object
selection = ctx.selected_objects
selected = set(selection).difference(set([active]))


then the code would be like this, see the complexity is taken out of the loop and dealt with earlier - like a pre-filter.

for obj in selected:
    obj.location[0] = act_obj_location


To use your own code it would look like this, there's nothing wrong with this approach. 

for obj in sel_obj:
    if obj != act_obj:
        obj.location[0] = act_obj_location


Avoiding letting your code get too nested can help readability - it's something to keep in mind.