I am familiar with the construction of the hyperreal numbers $^*\mathbb{R}$ as an extension of $\mathbb{R}$ built of equivalence classes of real sequences up to equivalence with respect to some fixed non-principal ultrafilter, but it's never felt satisfying to me given its inherent noncomputability.
A "real-world" context in which I see everyday objects behaving like elements of $^*\mathbb{R}$ comes up when I think about Big-O (technically I mean Big-$\Theta$ but let's run with the standard abuse of notation). For instance the set of functions $\{n^\alpha \mid \alpha \in \mathbb{R}_{\geq 0}\}$ up to Big-O equivalence can be identified with $\mathbb{R}_{\geq 0}$ via $\alpha \leftrightarrow n^\alpha$. From this view the function $\log(n)$ behaves like an infinitesimal since it grows more slowly than $n^\alpha$ for any $\alpha>0$, but faster than $n^0$.
Of course, ignoring Big-O equivalence, these functions themselves, and in fact any functions which come up when studying computational complexity, are nothing more than sequences of real numbers and so may in fact be thought of as hyperreal numbers under the ultrapower construction. Moreover, one may play around further by restricting $\alpha$ to, say, the set of computable real numbers. This idea has been a starting point for me in pursuit of a countable dense and hopefully computable subset of hyperreal numbers. A necessary condition for this to work is that $^*\mathbb{R}$ be separable, and this is one of my questions.
Sidenote: I guess I could be wrong but I would assume that the way to topologize $^*\mathbb{R}$ in the ultrapower construction is to take the natural product topology on sequences $\mathbb{N}\to\mathbb{R}$, and then quotient by the ultrafilter equivalence. So two sequences are close iff their first $N$ terms are pairwise within $\epsilon$ of each other, for some $N\in\mathbb{N}$ and $\epsilon\in\mathbb{R}$.
Question 1
Anyway, I haven't been able to prove but wonder if and hope the bold claim below is true. It would imply that $\mathbb{R}$ is not only separable but contains a computable dense subset.
Bold claim: Let $A$ be the set of computable real numbers (so $A$ is in particular a countable dense subset of $\mathbb{R}$). Let $B$ be the set of computable functions from $\mathbb{N}\to A$ (i.e., computable sequences of elements of $A$). Note that $B$ is countable. Fix a nonprincipal ultrafilter and construct $^*\mathbb{R}$ as usual. Then $^*B$, the image of $B$ in $^*\mathbb{R}$, is dense.
Question 2
Failing that, is $^*\mathbb{R}$ separable or not separable by some other (ideally constructive but potentially nonconstructive) argument?
The hyperreals are extremely non-separable. In fact, they satisfy a model-theoretic condition called $\aleph_1$-saturation, which says that any complete type (in the model theory sense) over a countable subset is realized. It follows from this that for any countable subset $Q\subseteq {^{*}\mathbb{R}}$, every cut in $Q$ contains uncountably many elements of ${^*\mathbb{R}}$.
As a concrete example of this behavior, let $Q$ be a countable set. We'll use a simple diagonalization to find an element $r\in {^*\mathbb{R}}$ which is greater than any element of $Q$.
Enumerate $Q$ as $(q_i)_{i\in \mathbb{N}}$, and write each $q_i$ as $[(a_{i,j})]_U$, an equivalence class modulo our ultrafilter $U$. Now define $b_j = (\max_{i<j} a_{i,j})+1$ and $r = [(b_j)]_U$. Now for all $i$, $r > q_i$, since $$\{j\in \mathbb{N}\mid b_j > a_{i,j}\}\supseteq \{j\in \mathbb{N}\mid j>i\}\in U.$$
It follows that $Q$ is not dense, since there is no element of $Q$ between $r$ and $r+1$.
By the way, I think the natural way to topologize ${^*\mathbb{R}}$ is by the order topology (where the basic open sets are order-theoretic intervals). Your suggestion, to take the quotient topology arising from the product topology on $\mathbb{R}^{\mathbb{N}}$, gives the trivial (indiscrete) topology on ${^*\mathbb{R}}$.
Indeed, suppose $V\subseteq {^*\mathbb{R}}$ is non-empty and open in this quotient topology. Writing $q$ for the quotient map, $q^{-1}(V)$ is open. Let $r = [(r_i)]_U\in V$, so $(r_i)\in q^{-1}(V)$. Then there is a basic open set $\prod_i V_i$, with $(r_i)\in \prod_{i} V_i\subseteq q^{-1}(U)$, where each $V_i$ is open and all but finitely many of the $V_i$ are $\mathbb{R}$. Now let $s = [(s_i)]_U$ be arbitrary in ${^*\mathbb{R}}$. Modify $(s_i)$ to $(s'_i)$ by setting $s'_i = r_i$ for all $i$ such that $V_i\neq \mathbb{R}$ and $s'_i = s_i$ for all other $i$. Then since $s'_i = s_i$ for all but finitely many $i$, $[(s'_i)]_U = [(s_i)]_U$, so $s' = s$. But also $(s'_i)\in \prod_i V_i\subseteq q^{-1}(V)$, so $s = s' = q((s_i'))\in V$. Since $s$ was arbitrary, $V = {^*\mathbb{R}}$.