Pull in images to table rows using craft.assets wilst looping through a table field
Here is what I would do:

First, make an actual array of all the images (using find to make the array):

{% set imageArray = craft.assets.folderId('2').find() %}


Then, loop over the entries:

{% for row in entry.howItWorksTable %}


and in that loop each time you display a row, you can get the corresponding image (using the loop variable index0):

{% set image = imageArray[loop.index0] %}


Putting it all together:

{% set imageArray = craft.assets.folderId('2').find() %}

{% if entry.howItWorksTable | length %}
  &lt;table&gt;
    {% for row in entry.howItWorksTable %}
      &lt;tr&gt;
        &lt;td&gt;&lt;img src="{{ image.getUrl() }}"&gt;{{ row.stages }}&lt;/td&gt;
        &lt;td&gt;{{ row.skillsLearnt }}&lt;/td&gt;
        &lt;td&gt;{{ row.classes }}&lt;/td&gt;
        &lt;td&gt;{{ row.price }}&lt;/td&gt;
      &lt;/tr&gt;  
    {% endfor %}
  &lt;/table&gt;
{% endif %}