Update
This feature is available in the biblatex-ext styles with a simple option: citexref.
\documentclass{article}
\usepackage[backend=biber,
style=ext-authoryear-comp,
citexref=true,
mergedate=basic,
mincrossrefs=2,
]{biblatex}
\usepackage{hyperref}
\begin{filecontents}{\jobname.bib}
@incollection{incoll1,
crossref = {coll1},
author = {Ard, Liz},
title = {Befriending Reptiles},
pages = {1--45},
doi = {12345/6789/1},
}
@incollection{incoll2,
crossref = {coll1},
author = {Keyes, Don},
title = {Asses I've Known},
pages = {342--346},
}
@incollection{incoll3,
crossref = {coll2},
author = {Other, A. N.},
title = {Flamingos of the Arctic},
pages = {3--4},
}
@collection{coll1,
editor = {Anvil, A. N. and Pond, Lily},
title = {Known Beings},
publisher = {Sheds & Sons},
address = {Mountain View},
year = 1987,
doi = {12345/6789/main},
}
@collection{coll2,
editor = {Ville, Bourne and Tree, Rown},
title = {Less Known Beings},
publisher = {Sheds & Sons},
address = {Mountain Pass},
year = 1989,
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\textcite{incoll1}
\textcite{incoll2}
\textcite{incoll3}
\printbibliography
\end{document}

The implementation of that feature uses an internal \cite... command (as explained in the second part of the answer below).
Old answer
Those short "in" references are "hard" to implement because they often require a major overhaul of the entire driver. As such a solution will require lots of lines of code, many of them copied directly from standard.bbx with just a few additions.
There are actually some custom styles that implement something similar, biblatex-chicago and biblatex-philosophy. These styles have already written their own versions of the drivers, so it was only a bit extra work to add the needed macros.
We can make use of \entrydata like your second example, which would have worked were it not for using the style authoryear-comp (it works fine with authoryear), where textcite has to do some complicated stuff.
So we define a simpler cite-bibmacro (based on authoryear.cbxs cite)
\newbibmacro*{simplecite}{%
\iffieldundef{shorthand}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\printnames{labelname}%
\setunit{\nameyeardelim}}%
\usebibmacro{cite:labelyear+extrayear}}
{\usebibmacro{cite:shorthand}}
}
and use that
\DeclareBibliographyDriver{incollection}{% adapted from standard.bbx based on answer by Denis at http://tex.stackexchange.com/a/118850/
\usebibmacro{bibindex}%
[...]
\usebibmacro{in:}%
\ifentryinbib{\thefield{crossref}}%
{\entrydata{\thefield{crossref}}{%
\usebibmacro{simplecite}}
\newunit\newblock
\usebibmacro{chapter+pages}}%
{[... code for full item here ...]}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
in an \entrydata wrapper, inside the curly braces all fields will be filled with the information of the parent entry. Which is crucial if you were to apply an author-title style, there the title of the @incollection will not coincide with that of the @collection.
It can also help deal with some weird corner cases in other styles.
MWE
\begin{filecontents}{\jobname.bib}
@incollection{incoll1,
crossref = {coll1},
author = {Ard, Liz},
title = {Befriending Reptiles},
pages = {1--45}}
@incollection{incoll2,
crossref = {coll1},
author = {Keyes, Don},
title = {Asses I've Known},
pages = {342--346}}
@incollection{incoll3,
crossref = {coll2},
author = {Other, A. N.},
title = {Flamingos of the Arctic},
pages = {3--4}}
@collection{coll1,
editor = {Anvil, A. N. and Pond, Lily},
title = {Known Beings},
publisher = {Sheds \& Sons},
address = {Mountain View},
year = 1987}
@collection{coll2,
editor = {Ville, Bourne and Tree, Rown},
title = {Less Known Beings},
publisher = {Sheds \& Sons},
address = {Mountain Pass},
year = 1989}
\end{filecontents}
\documentclass{article}
\usepackage[style=authoryear-comp, mergedate=basic, isbn=false, url=false, eprint=false, dashed=true, doi=false, sortcites=true, backend=biber, mincrossrefs=2]{biblatex}
\usepackage{hyperref}
\bibliography{\jobname}
\newbibmacro*{simplecite}{%
\iffieldundef{shorthand}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\printnames{labelname}%
\setunit{\nameyeardelim}}%
\usebibmacro{cite:labelyear+extrayear}}
{\usebibmacro{cite:shorthand}}
}
\DeclareBibliographyDriver{incollection}{% adapted from standard.bbx based on answer by Denis at http://tex.stackexchange.com/a/118850/
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{in:}%
\ifentryinbib{\thefield{crossref}}%
{\entrydata{\thefield{crossref}}{%
\usebibmacro{simplecite}}
\newunit\newblock
\usebibmacro{chapter+pages}}%
{\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{edition}%
\newunit
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\begin{document}
\textcite{incoll1}
\textcite{incoll2}
\textcite{incoll3}
\printbibliography
\end{document}
The approach taken in biblatex-chicago is to define a special citation macro called \bibxrefcite and then just cite the crossref'd item as in \bibxrefcite{\thefield{crossref}}, special care has to be taken here to make sure no cite tracker features interfere with the output (we don't want an "ibid." here, or a page backref to this "citation"). So using standard \cite is a bad idea, a custom command such as \bibcrefcite is a good solution.
biblatex-philsophy uses a very similar approach.
Our cite macro approach could look like
\DeclareCiteCommand{\citecrossref}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}}
{\usebibmacro{simplecite}}
{}
{}
Where simplecite is defined as above
With driver
\DeclareBibliographyDriver{incollection}{% adapted from standard.bbx based on answer by Denis at http://tex.stackexchange.com/a/118850/
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
[...]
\usebibmacro{in:}%
\ifentryinbib{\thefield{crossref}}%
{\citecrossref{\thefield{crossref}}
\newunit\newblock
\usebibmacro{chapter+pages}}%
{[... code for full item here ...]}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
MWE
\begin{filecontents}{\jobname.bib}
@incollection{incoll1,
crossref = {coll1},
author = {Ard, Liz},
title = {Befriending Reptiles},
pages = {1--45}}
@incollection{incoll2,
crossref = {coll1},
author = {Keyes, Don},
title = {Asses I've Known},
pages = {342--346}}
@incollection{incoll3,
crossref = {coll2},
author = {Other, A. N.},
title = {Flamingos of the Arctic},
pages = {3--4}}
@collection{coll1,
editor = {Anvil, A. N. and Pond, Lily},
title = {Known Beings},
publisher = {Sheds \& Sons},
address = {Mountain View},
year = 1987}
@collection{coll2,
editor = {Ville, Bourne and Tree, Rown},
title = {Less Known Beings},
publisher = {Sheds \& Sons},
address = {Mountain Pass},
year = 1989}
\end{filecontents}
\documentclass{article}
\usepackage[style=authoryear-comp, mergedate=basic, isbn=false, url=false, eprint=false, dashed=true, doi=false, sortcites=true, backend=biber, mincrossrefs=2]{biblatex}
\usepackage{hyperref}
\bibliography{\jobname}
\newbibmacro*{simplecite}{%
\iffieldundef{shorthand}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\printnames{labelname}%
\setunit{\nameyeardelim}}%
\usebibmacro{cite:labelyear+extrayear}}
{\usebibmacro{cite:shorthand}}
}
\DeclareCiteCommand{\citecrossref}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}}
{\usebibmacro{simplecite}}
{}
{}
\DeclareBibliographyDriver{incollection}{% adapted from standard.bbx based on answer by Denis at http://tex.stackexchange.com/a/118850/
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{in:}%
\ifentryinbib{\thefield{crossref}}%
{\citecrossref{\thefield{crossref}}
\newunit\newblock
\usebibmacro{chapter+pages}}%
{\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{edition}%
\newunit
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\begin{document}
\textcite{incoll1}
\textcite{incoll2}
\textcite{incoll3}
\printbibliography
\end{document}
Both examples above give

Just to show what is possible using the power of biblatex we can also condition showing of information that could pertain to the child or parent (a DOI or URL, say) depending on where they belong
Again we have
\newbibmacro*{xref:simplecite}{%
\iffieldundef{shorthand}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\printnames{labelname}%
\setunit{\nameyeardelim}}%
\usebibmacro{cite:labelyear+extrayear}}
{\usebibmacro{cite:shorthand}}
}
But now we also have extra eprint and addendum info
\newbibmacro*{xref:doi+eprint+url}{%
\ifboolexpr{togl {bbx:doi} and not test {\iffieldxref{doi}}}
{\printfield{doi}}
{}%
\newunit\newblock
\ifboolexpr{togl {bbx:eprint} and not test {\iffieldxref{eprint}}}
{\usebibmacro{eprint}}
{}%
\newunit\newblock
\ifboolexpr{togl {bbx:url} and not test {\iffieldxref{url}}}
{\usebibmacro{url+urldate}}
{}}
\newbibmacro*{xref:addendum+pubstate}{%
\iffieldxref{addendum}
{}
{\printfield{addendum}}%
\newunit\newblock
\iffieldxref{addendum}
{}
{\printfield{pubstate}}}
collected into one handy macro
\newbibmacro{xref:condinf}{%
\usebibmacro{xref:doi+eprint+url}%
\newunit\newblock
\usebibmacro{xref:addendum+pubstate}}
In the driver
\DeclareBibliographyDriver{incollection}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
[...]
\usebibmacro{in:}%
\ifentryinbib{\thefield{crossref}}%
{\entrydata{\thefield{crossref}}{%
\usebibmacro{xref:simplecite}}
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit\newblock
\usebibmacro{xref:condinf}}%
{[... code for full reference ...]}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
This setup can in our MWE distinguish between an inherited DOI and a "eigen"-DOI.
\begin{filecontents}{\jobname.bib}
@incollection{incoll1,
crossref = {coll1},
author = {Ard, Liz},
title = {Befriending Reptiles},
pages = {1--45},
doi = {12345/6789/1},
}
@incollection{incoll2,
crossref = {coll1},
author = {Keyes, Don},
title = {Asses I've Known},
pages = {342--346},
}
@incollection{incoll3,
crossref = {coll2},
author = {Other, A. N.},
title = {Flamingos of the Arctic},
pages = {3--4}}
@collection{coll1,
editor = {Anvil, A. N. and Pond, Lily},
title = {Known Beings},
publisher = {Sheds \& Sons},
address = {Mountain View},
year = 1987,
doi = {12345/6789/main},
}
@collection{coll2,
editor = {Ville, Bourne and Tree, Rown},
title = {Less Known Beings},
publisher = {Sheds \& Sons},
address = {Mountain Pass},
year = 1989}
\end{filecontents}
\documentclass{article}
\usepackage[style=authoryear-comp, mergedate=basic, backend=biber, mincrossrefs=2]{biblatex}
\usepackage{hyperref}
\bibliography{\jobname}
\newbibmacro*{xref:simplecite}{%
\iffieldundef{shorthand}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\printnames{labelname}%
\setunit{\nameyeardelim}}%
\usebibmacro{cite:labelyear+extrayear}}
{\usebibmacro{cite:shorthand}}
}
\newbibmacro*{xref:doi+eprint+url}{%
\ifboolexpr{togl {bbx:doi} and not test {\iffieldxref{doi}}}
{\printfield{doi}}
{}%
\newunit\newblock
\ifboolexpr{togl {bbx:eprint} and not test {\iffieldxref{eprint}}}
{\usebibmacro{eprint}}
{}%
\newunit\newblock
\ifboolexpr{togl {bbx:url} and not test {\iffieldxref{url}}}
{\usebibmacro{url+urldate}}
{}}
\newbibmacro*{xref:addendum+pubstate}{%
\iffieldxref{addendum}
{}
{\printfield{addendum}}%
\newunit\newblock
\iffieldxref{addendum}
{}
{\printfield{pubstate}}}
\newbibmacro{xref:condinf}{%
\usebibmacro{xref:doi+eprint+url}%
\newunit\newblock
\usebibmacro{xref:addendum+pubstate}}
\DeclareBibliographyDriver{incollection}{% adapted from standard.bbx based on answer by Denis at http://tex.stackexchange.com/a/118850/
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{in:}%
\ifentryinbib{\thefield{crossref}}%
{\entrydata{\thefield{crossref}}{%
\usebibmacro{xref:simplecite}}
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit\newblock
\usebibmacro{xref:condinf}}%
{\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{edition}%
\newunit
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\begin{document}
\textcite{incoll1}
\textcite{incoll2}
\textcite{incoll3}
\printbibliography
\end{document}
The "Keyes" entry inherits the DOI from "Anvil & Pond", but it is not displayed to avoid redundancies, the distinct DOI of "Ard" is correctly reported.

citestyle=authoryear-comp, bibstyle=authoryearwhenstyle=authoryear-compwould do the exact same thing. Thecitestyle/bibstyleallows for a finer control of the exact output, but especially when the two keys are far apart in the options list, things become unclear and sometimes outright confusing. – moewe Sep 13 '15 at 05:31\printfield{editor+others}. – moewe Sep 13 '15 at 06:09