For something like this, your best bet is to start learning Python and let ModelBuilder generate the heart of your Python code for you. Then just add the components that you need to accomplish your task.
- Start by creating a model in ArcGIS like this:

- Export it to a Python Script with Model-->Export-->to Script-->Python which will give you the basics of your code, then you just need to learn how to wrap your own code around it.
- Add the iteration code around the source that ModelBuilder created for you. It should look something like the code block below. See ArcGIS Help on using Cursors for a sample Python code.
- Create a script UI in ArcGIS (Toolbox-->Add-->Script) where you ask for user input like Layer A, Layer B, Output Folder, & file basename. My script just appends a 1,2,3 to the end of the basename but you could come up with your own version if you wanted it different.
Learning Python is not as daunting as you think, especially since ModelBuilder will generate the meat of your code for you during the export process. You'll see when you generate your own Python script from the model that I didn't add much to it.
# Usage: CreateFeatures <A> <B> <outputfolder> <output basename>
# ---------------------------------------------------------------------------
# Import system modules
import sys, string, os, arcgisscripting
# Create the Geoprocessor object
gp = arcgisscripting.create()
# Load required toolboxes...
gp.AddToolbox("D:/Program Files/ArcGIS/ArcToolbox/Toolboxes/Data Management Tools.tbx")
# Script arguments...
A = sys.argv[1]
B = sys.argv[2]
outfolder = sys.argv[3]
basename = sys.argv[4]
# Create a Search Cursor that references the features in layer B
rows = gp.searchcursor(B)
row = rows.next()
# Create a numbering system for new output files
filenum = 0
while row:
# Report a message back to the user about progress
gp.addmessage("Creating selected set #" + str(filenum) + " from " + A)
#Create a feature layer to cycle through your selection features
fidvalue = row.GetValue("FID")
gp.MakeFeatureLayer(B,"cursor_lyr","FID =" + str(fidvalue))
# Process: Select Layer By Location...
gp.SelectLayerByLocation_management(A, "INTERSECT", "cursor_lyr", "", "NEW_SELECTION")
outname = outfolder + "\\" + basename + str(filenum)
# Process: Copy Features...
gp.CopyFeatures_management(A, outname, "", "0", "0", "0")
#iterate the output file number
filenum = filenum + 1
#go to the next row
row = rows.next()