Q: A button with a number on top of it - Can I create that without using Grid.Row I asked a developer to create something like this:

Here solution is here:
<?xml version="1.0" encoding="UTF-8"?>
<StackLayout
    HorizontalOptions="Center"
    VerticalOptions="Center"
    x:Class="J.Templates.CardButtonTemplate2"
    x:Name="this" 
    xmlns ="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" >
    <t:TextLabel
        HorizontalOptions="CenterAndExpand"
        HorizontalTextAlignment="Center"
        Text="3 pts"
        TextColor="Black"
        VerticalOptions="Start" />
    <Frame
        BackgroundColor="Blue"
        CornerRadius="10"
        HasShadow="False"
        Padding="0"
        VerticalOptions="FillAndExpand" >
        <Grid  RowSpacing="0" VerticalOptions="FillAndExpand" >
            <Grid.RowDefinitions>
                <RowDefinition x:Name="firstRow" Height="35"/>
            </Grid.RowDefinitions>
            <Label
                HorizontalOptions="CenterAndExpand"
                HorizontalTextAlignment="Center"
                Text="Easy"
                TextColor="White"
                VerticalOptions="CenterAndExpand"
                VerticalTextAlignment="Center"
                x:Name="textA" />
            <Grid.GestureRecognizers>
                <TapGestureRecognizer Command="{Binding TapCommand, Source={x:Reference this}}" NumberOfTapsRequired="1" />
            </Grid.GestureRecognizers>
        </Grid>
    </Frame>
</StackLayout>

What I would like to know are two things:
a) Is this the only way I can set the height using the RowDefinition or is there another cleaner way to do this?
b) I have five of these buttons in a row and the width expands so they touch each other.  How can I limit the width of the button?

A: Here is a simple example:
<StackLayout>
    <Label Text="3 pts"/>
    <Button HeightRequest="35" WidthRequest="50" CornerRadius="10"
            Command="{Binding TapCommand, Source={x:Reference this}}" Text="Easy"/>
</StackLayout>

for all your HorizontalOptions and VerticalOptions, use Center. That should give you what you're looking for and simplify your code quite a bit.
As for question B, you can set the Spacing(if using a StackLayout) or ColumnSpacing(if using a Grid) to force separation between the buttons.

A: 
a) Is this the only way I can set the height using the RowDefinition or is there another cleaner way to do this?

It is easier to use a StackLayout as parent layout(manually set its HorizontalOptionsandVerticalOptions) , then you could set HeightRequest on control.
For example
<StackLayout HorizontalOptions="StartAndExpand" VerticalOptions="StartAndExpand">
    <Label Text="3 pts" HorizontalTextAlignment="Center"/>
    <Button HeightRequest="50" CornerRadius="10" BackgroundColor="Blue" Text="Easy" TextColor="White"/>
</StackLayout>



b) I have five of these buttons in a row and the width expands so they touch each other. How can I limit the width of the button?

You could wrap Grid inside stackLayout , and create ColumnDefinitions to control their width .
<StackLayout HorizontalOptions="StartAndExpand" VerticalOptions="StartAndExpand">
    <Grid ColumnSpacing="0" HeightRequest="50">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="50"/>
            <ColumnDefinition Width="80"/>
            <ColumnDefinition Width="30"/>
            <ColumnDefinition Width="80"/>
            <ColumnDefinition Width="100"/>
        </Grid.ColumnDefinitions>
        <Button HeightRequest="50" Grid.Column="0"  CornerRadius="10" BackgroundColor="Blue" Text="Easy" TextColor="White"/>
        <Button HeightRequest="50" Grid.Column="1" CornerRadius="10" BackgroundColor="Red" Text="Easy" TextColor="White"/>
        <Button HeightRequest="50" Grid.Column="2"  CornerRadius="10" BackgroundColor="Green" Text="Easy" TextColor="White"/>
        <Button HeightRequest="50"  Grid.Column="3" CornerRadius="10" BackgroundColor="Purple" Text="Easy" TextColor="White"/>
        <Button HeightRequest="50" Grid.Column="4" CornerRadius="10" BackgroundColor="Orange" Text="Easy" TextColor="White"/>
    </Grid>
</StackLayout>


