selecting sequences in VSE via python
Sequences API methods.

Can use API methods of class bpy.types.Sequences, from the instance scene.sequence_editor.sequences to add new strips to the VSE.  As a "rule of thumb" I avoid using operators whenever possible.  Using the API methods can reference the returned strip on creation, eg a new image strip: image_strip = sequences.new_image(...) removing the need to reference the strip by name at all.

Test script, adds an image strip on channel 1, a color strip on channel 2 and a gamma cross effect strip on channel 3.  The color strips color is set to red.  The gamma cross script uses the other two as input.

import bpy

context = bpy.context
scene = context.scene
sed = scene.sequence_editor
sequences = sed.sequences
# add an image strip
filepath = "/home/batfinger/Pictures/BGLTest.png"
frame_start = 1
frame_end = 90
# add an image strip.
image_strip = sequences.new_image("Image", filepath, 1, frame_start)
# give it a duration
image_strip.frame_final_end = frame_end

color_strip = sequences.new_effect("Color", 'COLOR', 2,
       frame_start=frame_start, 
       frame_end=frame_end)

color_strip.color = (1, 0, 0)

gamma_strip = sequences.new_effect("GammaX", 'GAMMA_CROSS', 3,
       frame_start=frame_start, 
       frame_end=frame_end, 
       seq1=color_strip,
       seq2=image_strip)


Can reference a strip by name via sequences[name] I like to use sequences.get(name) as it will return None if a strip of that name does not exist. 

If an image strip with same name is added twice, eg image_strip = sequences.new_image("Image", ...) again,  the new strip will get the suffix "Image.001" naming.  (Using the operator will do same thing, but with filename.) Can be sure of the name of new strip with image_strip.name.

An issue with your q script is what is image_file_list.