Spectrogram without using stft
Can I use any kind of transform to make spectrogram?

If your input signal is a finite length sequence and you want to analyze how the frequency domain components are varying in that input sequence, you have to use one of the techniques used for time-frequency analysis. STFT is one such technique, there are others also like wavelet transform, quadratic time-frequency distribution functions, etc.
For the $2^{nd}$ question, if you take FFT of the entire signal as 1 window, then those FFT coefficients will show all of the existing frequency components at once, you won't have the time-information. Dividing the input into smaller chunks of overlapping windows and then taking FFT of each window provides you with time information too, as in what frequency component was significant at what time, during the whole signal collection.