Why resampling change this FFT output?
I think there are a couple things going on here.

First, the flatness of your baseline plot is a little deceiving because the tones that you have added (1 - 500 Hz) are all almost exact multiples of the fundamental frequency of the fft (fs/nfft = 1.024 Hz/bin).

If you increased nfft by a factor of 10, for example, the finer frequency resolution of the zero-padded FFT would show something similar to your New FFT Plot.  Here it is with nfft = 10240:



Because the tones are centered well on the FFT bins, there is no spectral leakage.  If you were to change the tones so that they were for example at multiples of 0.75 Hz, you'd see something like this:



It looks like a mess, but what's really happening is that each tones is getting smeared across several bins and the tones are constructively and destructively interfering.  Here's a single tone at 0.75 Hz with nfft=10240:



This spectral leakage occurs because the FFT assumes that its input is repeated forever, so if you have a sinusoid whose period is a multiple of the fundamental frequency of the FFT everything looks as you'd expect, but if not then there will be a discontinuity between the first sample and the last sample.  This effect can be mitigated using window functions: https://en.wikipedia.org/wiki/Window_function.

However, the main issue that you're seeing is the result of aliasing.  If you want to avoid aliasing, you need to low-pass filter your signal before downsampling.  Otherwise, any frequency content in the original signal that is above the Nyquist rate of your down-sampled signal will alias.  In your case, the sampling rate after down-sampling is 1024/10 = 102.4 Hz, so all of the tones you have above 51.2 Hz in your original signal will alias to frequencies below 51.2 Hz and interfere with the true signals at those frequencies.

Changing your down-sampling factor to 8 makes the effect easier to demonstrate because the aliased tones will land right on top of other true tones.  If your original signal only has tones below the 64 Hz, all tones are present in the down-sampled signal:

for f in np.arange(1, 64):
...
step = 8
x2 = x1[::step]   # down-sampling by a factor of 10??
fs2 = fs/step




Now let's add a tone at 65 Hz:

for f in np.arange(1, 66):


There is no longer any tone at 63 Hz or 65 Hz.  The 65 Hz tone has aliased and destructively interfered with the true tone at 63 Hz to cancel it out:



Now, let's change the phase of the original tone by 180 degrees:

for f in np.arange(1, 66):
x1 += np.sin(2*np.pi*f*t1 + np.pi/2)




There's still no tone at 65 Hz, but the one at 65 Hz is now constructively interfering, doubling the magnitude in the 63 Hz bin.

So if you extend this to 500 Hz, you can start to see what's going on.  The fix is to to apply a low-pass filter before you down-sample.  The combined steps of low-pass filtering and then down-sampling is called decimation.  Here's the scipy function to do it: https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.decimate.html.