a. Obtain the target hotspot name, like "john home network"
In short, yes. That is seen in plaintext from the client using probe requests (if the connection was saved), and you can also see this in plaintext from the AP using beacon packets (if it isn't specifically told to nullify the ESSID field. If it is, discovery via the client is still very easy). Additionally, if the AP doesn't broadcast the ESSID, and the client doesn't have the connection saved, you will see the ESSID in plaintext for all new connections.
b. Setup a new wifi network with the same name by using e.g. Android adhoc hotspot.
Yes, this is rather simple and can be done multiple ways.
c. Wait for the person to e.g. make a call outside the original hotspot range, expecting the smartphone to autoconnect to fake hotspot (after unlocking).
Yes, this is also pretty automatic in most scenarios. However, you need to be sure that you're using the same method for authentication. This is more important with WPA2-Enterprise (you must use the correct EAP mode on your evil twin AP).
d. Catch the credentials sent to the fake hotspot.
This one is a little bit more complex. Depending on what we're talking about (WPA2-PSK or WPA2-Enterprise using EAP-PEAP, EAP-TLS, EAP-*), it is very difference. Specific to WPA2-PSK, you should look into the handshake that is executed in order to authenticate and become authorized. For WPA2-Enterprise you'll need to set up a RADIUS server to do MITM, which is a little bit more complex.