To answer your first question, suppose that we are at the $m$-th iteration of AdaBoost, so that we already have a set of weights $\{w^{(m)}_n\}_{n=1}^N$ for each of the datapoints. If our base learners are single-split trees, AdaBoost will learn the next base classifier such that minimizes:
$$
J_m = \sum_{n=1}^N w^{(m)} \mathbb{1}(t_n \neq G_m({\bf x}_n, d, s))
$$
Here $G$ is our single-split tree which we define as
$$
G_m({\bf x}_n, d, s) = \begin{cases}
1 & x_{nd} \leq s \\
-1 & x_{nd} > s
\end{cases}
$$
Where $s$ is the cutoff point and $d$ is the target dimension (or feature). Note that the cost function $J_m$ weights each of the observations.
Regarding to your second question, again, considering $J_m$, we would choose the feature $d$ and cutoff point $s$ that minimizes the cost function. $d$ can either be chosen randomly or try different values of $d$ and see which one results in the lowest score. To choose $s$, however, one must try a set of cutoff points. e.g., [0.1, 0.2, ..., 1, 1.2]
and see which one results in the lowest score for a given $d$.
If you would like to see an implementation of this idea in python, you can check out this notebook.