1. The easiest solution I see would be to do !question list, open the link and capture that. 🤔 Now if you want to stylize them you're gonna need to write some code to use the URL and add style onto it with CSS for example.
2. Yes, you definitely can, take your !ask question, localize $(querystring) and depending on where you want the username to be (in front or at the end of the question), add the $(user) variable, between the two add %20%E2%80%94%20, that's the URL-encoding of "`` — `", so for example: $(user)%20%E2%80%94%20$(querystring) for User — Question`.
Btw, you can also create an alias for !question list, if you won't use !question at all: create a !questions (with an s) command, in the Message field add "list", and in the Alias field add !question (without s).
And of course feel free to call your commands whatever is simplest for you, for example you could shorten !questions to !q so you don't have to type the whole thing every time, and you could rename !question to _question to specify it's an aliased command you don't intend to use otherwise.
Also, quick note, the link !question list gives you will always be the same, so you could as well bookmark it.